给定不同尺寸的numpy
数组,我想将它们连接起来。显然这是一个很普遍的问题,但我发现的答案似乎与我的问题不符。
在一个小例子上尝试了几种不同的方法后,我仍然无法使它工作。我已经研究过Concat two arrays of different dimensions numpy和How to unnest a nested list [duplicate]。我还尝试附加和展平它。
import numpy as np
a = np.arange(9)
a = a.reshape((3,3))
b = []
b.append(a[0,:])
b.append(a[1,1:2])
b.append(a[2,2])
b = np.asarray(b).flatten()
print(b) # [array([0, 1, 2]) array([4]) 8]
总而言之,我总是收到一些错误消息,指出尺寸不匹配或类似。
答案 0 :(得分:0)
因此b
是一个列表-具有(3,)和(1,)数组,以及标量(0d,()
):
In [76]: a=np.arange(9).reshape(3,3)
In [77]: b = [a[0,:], a[1,1:2],a[2,2]]
In [78]: b
Out[78]: [array([0, 1, 2]), array([4]), 8]
但是您想要什么组合?
如果最后一项是数组(或列表),我们可以串联:
In [79]: b = [a[0,:], a[1,1:2],[a[2,2]]]
In [80]: b
Out[80]: [array([0, 1, 2]), array([4]), [8]]
In [81]: np.concatenate(b)
Out[81]: array([0, 1, 2, 4, 8])
hstack
是concatenate
的封面,确保所有元素至少为1d:
In [82]: b = [a[0,:], a[1,1:2],a[2,2]]
In [83]: np.hstack(b)
Out[83]: array([0, 1, 2, 4, 8])