2017-09-15 110 views
0

我有一个非常简单的问题! 我如何合并两个numpy的阵列增加尺寸:合并两个Numpy Array

假设我有以下阵列:

a=[1,2] 
b=[3,4,5] 

我需要这样的结果:

c=[[1,2],[3,4,5] 

然而

np.concatenate((a,b),axis=0) 

不起作用!

谢谢!

+0

你什么错误? – Sam51

+0

你为什么要这样做?这个数组不会有很多'numpy.array'属性。 – Akavall

+0

不要错误。我的结果是[1,2,3,4,5] – Elham

回答

1

您只需执行以下操作即可获得您想要的结果。

c = [a,b] 

或者

c = np.array([a,b]) 

结果:

[[1, 2], [3, 4, 5]] 
+0

您能否显示'c'的'repr' - 查看类型和dtype? – hpaulj

1

把它们放在一起在一个列表:

In [269]: c = [a,b] 
In [270]: c 
Out[270]: [[1, 2], [3, 4, 5]] 

使从一个数组不起作用v ERY很好:

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,但它需要一个很好的二维数组。那个衣衫褴褛的1d对象dtype数组不起作用。

itertools.zip_longest也可用于'填充'c的元素。但简单地写入文件是最简单的。使用zip_longest填充行,然后使用savetxt来编写csv。请注意,“空白”分隔“细胞”:

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.]])