我有一个非常简单的问题! 如何通过增加维度来合并两个numpy数组:
假设我有以下数组:
a=[1,2]
b=[3,4,5]
我需要这个结果:
c=[[1,2],[3,4,5]
然而
np.concatenate((a,b),axis=0)
不起作用!
谢谢!
答案 0 :(得分:1)
您只需执行以下操作即可获得所需的结果。
c = [a,b]
或者
c = np.array([a,b])
<强>结果:强>
[[1, 2], [3, 4, 5]]
答案 1 :(得分:1)
将它们放在一个列表中:
In [269]: c = [a,b]
In [270]: c
Out[270]: [[1, 2], [3, 4, 5]]
从中制作阵列并不能很好地运作:
In [271]: np.array(c)
Out[271]: array([list([1, 2]), list([3, 4, 5])], dtype=object)
但如果您的目标只是将列表写入文件csv样式,我们可以这样做:
In [272]: for row in c:
...: line=''
...: for x in row:
...: line += '%5s'%x
...: print(line)
...:
1 2
3 4 5
对于文件,只需替换print
的文件写入。
numpy
有一个很好的savetxt
,但它需要一个漂亮的2d数组。那个参差不齐的1d对象dtype数组不起作用。
itertools.zip_longest
也可用于填充&#39; c
的元素。但是简单地写入文件是最简单的。
使用zip_longest
填充行,然后使用savetxt
编写csv。请注意&#39;空白&#39;分隔的&#39; cell&#39;:
In [321]: rows =list(zip(*zip_longest(*c,fillvalue='')))
In [322]: rows
Out[322]: [(1, 2, ''), (3, 4, 5)]
In [323]: np.savetxt('foo.txt',rows, fmt='%5s',delimiter=',')
In [324]: cat foo.txt
1, 2,
3, 4, 5
使用正确的填充,我可以重新加载csv(可能需要填充填充值):
In [328]: np.genfromtxt('foo.txt',delimiter=',')
Out[328]:
array([[ 1., 2., nan],
[ 3., 4., 5.]])