将1D numpy数组添加/堆叠到2D numpy数组

时间:2019-02-21 01:15:24

标签: python arrays numpy

我正在开发自己的AI项目,将每个图层(大小可能不同)的结果(列表)附加到列表中。使用列表可以很好地工作,但是为了可扩展性,我将其转换为numpy数组,但我无法做到这一点。这是我想做的。

a = np.array([[1,2,3],[4,5,6]])
b= np.array([7,8])

我想做

a = np.array([[1,2,3],[4,5,6],[7,8]])

我尝试附加和连接,但是它们似乎失败了,并给出了一个错误,即它们必须具有相同的大小。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

假设您想将b附加到a作为附加列,以下内容将利用numpy.c_

import numpy as np
new_a = np.c_[a,b]
print(new_a) 
# array([[1, 2, 3, 7],
#       [4, 5, 6, 8]])

否则,请小心numpy.array对象,因为它们的形状很重要!

答案 1 :(得分:0)

正如问题注释中提到的Coldspeed一样,a = np.array([[1,2,3],[4,5,6],[7,8]])不会生成紧凑的标量dtype数组,而是会生成列表数组。

使用a.dtype将返回数组元素的数据类型。

a = np.array([[1,2,3],[4,5,6]])返回int32

a = np.array([[1,2,3],[4,5,6],[7,8]])返回object


除此之外,Append和Concatenate函数还要求您的数组在连接它们的维度上具有相同的长度。也许您可以做的是用'nan'填充数组b以适合所需的长度:b = np.array([[7,8,np.nan]]),这将为您

[[ 1.  2.  3.]
 [ 4.  5.  6.]
 [ 7.  8. nan]] 

随着层数的增加,您可能需要检查b的长度和填充数组a。


如果您打算将数组b作为列添加,那么HAL 9001的答案会更好。