📌  相关文章
📜  如何修复:所有输入数组必须具有相同的维数

📅  最后修改于: 2022-05-13 01:55:46.299000             🧑  作者: Mango

如何修复:所有输入数组必须具有相同的维数

在本文中,我们将修复错误:所有输入数组在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)


输出:

错误原因:

当我们在 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))

输出:

修复错误:

如果我们只想使用连接函数,则可以通过使两个数组的维度相同来修复此错误。

方法一:使用连接函数

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]]