如何修复:所有输入数组必须具有相同的维数
在本文中,我们将修复错误:所有输入数组在Python中必须具有相同的维数。
出现此错误的案例:
Python3
# 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)
Python3
# 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))
Python3
# 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)
Python3
# 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)
Python3
# 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)
Python3
# 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)
输出:
ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 2 and the array at index 1 has size 3
错误原因:
当我们在 NumPy 库中为 NumPy 数组使用连接函数时,两个数组的维度在连接时必须匹配。在上面的示例中,np_array1 的维度为 2 * 2,np_array2 的维度为 2 * 3,这与连接两个数组的 concatenate函数不兼容。
Python3
# 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)
修复错误:
如果我们只想使用连接函数,则可以通过使两个数组的维度相同来修复此错误。
方法一:使用连接函数
numpy.concatenate()函数沿现有轴连接一系列数组。
句法:
np.concatenate([array1,array2])
Python3
# 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))
Python3
# 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))
Python3
# 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]
Python3
# 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]]