我正在开发自己的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]])
我尝试附加和连接,但是它们似乎失败了,并给出了一个错误,即它们必须具有相同的大小。感谢您的帮助。
答案 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的答案会更好。