Python Numpy - 附加三个数组以形成矩阵或3D数组

时间:2016-08-23 16:19:15

标签: python arrays numpy

这是我的一段代码

一切都是一个笨拙的阵列。我也欢迎使用列表进行操作。

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

c = ['test1', 'test2', 'test3','test4','test5']

预期结果:

d = [ 1, 2, 3, 4, 5; 
      3, 2, 2, 2, 8;
      'test1','test2', 'test3', 'test4','test5' ]

OR

 d = [ 1  3   'test1';
       2   2    'test2';
       3   2   'test3';
        4   2   'test4';
        5   8    'test5']

3 个答案:

答案 0 :(得分:0)

查看concat method.

>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])
>>> np.concatenate((a, b), axis=0)
array([[1, 2],
       [3, 4],
       [5, 6]])

答案 1 :(得分:0)

使用numpy.concat的Adam answer也是正确的,但就指定您期望的确切形状 - 垂直堆叠的行 - 而您想要查看{{ 3}}:

>>> import numpy as np
>>> np.vstack([a, b, c])
array([['1', '2', '3', '4', '5'],
       ['3', '2', '2', '2', '8'],
       ['test1', 'test2', 'test3', 'test4', 'test5']], 
        dtype='<U21')

除此之外,您可以采用以下方式:由于您的单独数组(int64int64<U5)全部放在一起,新的array将自动使用限制性最小的类型,在本例中为unicode类型。

另请参阅:numpy.hstack

答案 2 :(得分:0)

您的query = new BasicDBObject(mongoDateField, new BasicDBObject("$gte", startDate).append("$lte", endDate)); mongoCount = mongoCollection.getCollection().count(query); ab是列表;您必须使用c来获取数组,它将显示为np.array([1,2,3])(不带逗号)。

只需从这些列表中创建新列表即可生成列表

[1 2 3]

简单地连接列表会产生一个更长的

In [565]: d=[a,b,c]
In [566]: d
Out[566]: 
[[1, 2, 3, 4, 5],
 [3, 2, 2, 2, 8],
 ['test1', 'test2', 'test3', 'test4', 'test5']]

In [567]: a+b+c Out[567]: [1, 2, 3, 4, 5, 3, 2, 2, 2, 8, 'test1', 'test2', 'test3', 'test4', 'test5'] 数组包含数字和字符串都有问题。你必须制作一个“结构化数组”。

将这些组合成一个数组的最简单方法是使用numpy实用程序函数:

fromarrays

或稍微编辑一下显示屏:

In [561]: x=np.rec.fromarrays(([1,2,3],[3,2,2],['test1','test2','test3']))
In [562]: x['f0']
Out[562]: array([1, 2, 3])
In [563]: x['f2']
Out[563]: 
array(['test1', 'test2', 'test3'], 
      dtype='<U5')

In [568]: x
Out[568]: 
rec.array([(1, 3, 'test1'), (2, 2, 'test2'), (3, 2, 'test3')], 
          dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<U5')])

这不是二维数组;它是1d(这里有3个元素),有3个字段。

也许以类似于您的规范的方式格式化此数组的最简单方法是使用In [569]: print(x) [(1, 3, 'test1') (2, 2, 'test2') (3, 2, 'test3')] 编写器:

csv