连接不同形状的数组
连接不同形状的数组
给定不同维度的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]
总之,我总是得到一些错误消息,说明维度不匹配或类似的问题。
admin 更改状态以发布 2023年5月22日
所以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])