繁体   English   中英

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

[英]Add/Stack a 1D numpy array to a 2D numpy array

我正在做自己的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]])

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

假设您希望将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对象的形状,因为它们的形状很重要!

正如问题评论中提到的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


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

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

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


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM