如何修复在Python中所有输入数组必须有相同的维数
在这篇文章中,我们将修复这个错误。在Python中,所有的输入数组必须有相同的维数。
此错误发生的案例:
# Importing numpy library
import numpy as np
# Creating a numpy array with dimension 2 * 2
np_array1 = np.array([[2, 3],[2,4]])
# Creating a numpy array with dimension 2 * 3
np_array2 = np.array([[8, 9,10], [10,11,12]])
# Concatenating the two arrays
np_array3 = np.concatenate([np_array1,np_array2])
print(np_array3)
输出:
ValueError: 连接轴的所有输入数组尺寸必须完全匹配,但是沿着尺寸1,索引0的数组尺寸为2,索引1的数组尺寸为3。
错误的原因 :
当我们在NumPy库中对NumPy数组使用concatenate函数时,两个数组的尺寸必须在连接时匹配。在上面这个例子中,np_array1的尺寸是22,np_array2的尺寸是23,这与连接函数连接这两个数组是不兼容的。
# Importing numpy library
import numpy as np
# Creating a numpy array with dimension 2 * 2
np_array1 = np.array([[2, 3],[2,4]])
# Creating a numpy array with dimension 2 * 3
np_array2 = np.array([[8, 9,10], [10,11,12]])
print("Dimensions of np_array1 " + str(np_array1.shape)
+" != "+"Dimensions of np_array2 "+ str(np_array2.shape))
输出:
Dimensions of np_array1 (2, 2) != Dimensions of np_array2 (2, 3)
修复错误:
如果我们只想使用连接函数,可以通过使两个数组的尺寸相同来解决这个错误。
方法1:使用连接函数
numpy.concatenate()函数沿着一个现有的轴连接一串数组。
语法:
np.concatenate([array1,array2])
# Importing numpy library
import numpy as np
# Creating a numpy array with dimension 2 * 2
np_array1 = np.array([[2, 3],[2,4]])
# Creating a numpy array with dimension 2 * 2
np_array2 = np.array([[8, 9], [10,11]])
# Concatenating the two arrays
np_array3 = np.concatenate([np_array1,np_array2])
print(np_array3)
输出:
在输出中,np_array1被附加或堆叠在数组np_array2的顶部。
[[ 2 3]
[ 2 4]
[ 8 9]
[10 11]]
方法2:使用row_stack()或column_stack()函数
另一种方法是使用row_stack()或column_stack()函数来解决这个错误,如果两个数组的列尺寸相同,那么可以使用row_stack()函数,如果一个数组的列尺寸和第二个数组的行尺寸相同,那么可以使用column_stack()函数来解决这个错误,数组将相应地被堆叠到另一个数组中。
语法:
np.column_stack((array1,array2))
# Importing numpy library
import numpy as np
# Creating a numpy array with dimension 2 * 2
np_array1 = np.array([[2, 3],[2,4]])
# Creating a numpy array with dimension 2 * 3
np_array2 = np.array([[8, 9,10], [10,11,12]])
# Using the column_stack() function
np_array3 = np.column_stack((np_array1,np_array2))
print(np_array3)
输出:
在输出中,np_array1被追加或叠加到数组np_array2的左边。
[[ 2 3 8 9 10]
[ 2 4 10 11 12]]
row_stack()函数的语法:
np.row_stack((array1,array2))
# Importing numpy library
import numpy as np
# Creating a numpy array with dimension 1 * 3
np_array1 = np.array([2, 3,4])
# Creating a numpy array with dimension 2 * 3
np_array2 = np.array([[8, 9,10], [10,11,12]])
# Using the row_stack() function
np_array3 = np.row_stack((np_array1,np_array2))
print(np_array3)
输出:
在输出中,np_array1被附加或堆叠在数组np_array2的顶部。
[[ 2 3 4]
[ 8 9 10]
[10 11 12]]
方法3:使用np.c()函数
另一种修复错误的方法是使用np.c_()函数,其作用与np.column_stack()函数相同。
column_stack()函数的语法:
np.c_[array1,array2]
# Importing numpy library
import numpy as np
# Creating a numpy array with dimension 2 * 2
np_array1 = np.array([[2, 3],[2,4]])
# Creating a numpy array with dimension 2 * 3
np_array2 = np.array([[8, 9,10], [10,11,12]])
# Using the np.c_() function
np_array3 = np.c_[np_array1,np_array2]
print(np_array3)
输出:
在输出中,np_array1被追加或叠加到数组np_array2的左边。
[[ 2 3 8 9 10]
[ 2 4 10 11 12]]