如何修复在Python中所有输入数组必须有相同的维数

如何修复在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]] 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程