在numpy中合并两个具有不同维度的数组

时间:2020-01-01 13:10:26

标签: python arrays for-loop

我希望合并两个数组...

a = np.array(["A", "B", "C"])
b = np.array(["1", "2", "3", "4", "5"])

放入与此类似的数组(矩阵)中

[["A", "B", "C", "1"]
 ["A", "B", "C", "2"]
 ["A", "B", "C", "3"]
 ["A", "B", "C", "4"]
 ["A", "B", "C", "5"]]

我已经尝试过for循环,但是它似乎不起作用。我是Python的新手,将不胜感激。 谢谢。

4 个答案:

答案 0 :(得分:1)

>>> np.hstack((np.tile(a, (len(b), 1)), b[:, None]))
array([['A', 'B', 'C', '1'],
       ['A', 'B', 'C', '2'],
       ['A', 'B', 'C', '3'],
       ['A', 'B', 'C', '4'],
       ['A', 'B', 'C', '5']], dtype='<U1')

答案 1 :(得分:1)

这可以解决问题:

import numpy as np

a = np.array(["A", "B", "C"])
b = np.array(["1", "2", "3", "4", "5"])

c=np.hstack([np.broadcast_to(a, shape=(len(b), len(a))), b.reshape(-1,1)])

输出:

[['A' 'B' 'C' '1']
 ['A' 'B' 'C' '2']
 ['A' 'B' 'C' '3']
 ['A' 'B' 'C' '4']
 ['A' 'B' 'C' '5']]

答案 2 :(得分:0)

也许将Python list comprehensionnp.append一起使用:

>>> [np.append(a,x) for x in b]
[array(['A', 'B', 'C', '1'],
      dtype='<U1'), array(['A', 'B', 'C', '2'],
      dtype='<U1'), array(['A', 'B', 'C', '3'],
      dtype='<U1'), array(['A', 'B', 'C', '4'],
      dtype='<U1'), array(['A', 'B', 'C', '5'],
      dtype='<U1')]

根据需要,可以将结果包装在np.array中:

>>> np.array([np.append(a,x) for x in b])
array([['A', 'B', 'C', '1'],
       ['A', 'B', 'C', '2'],
       ['A', 'B', 'C', '3'],
       ['A', 'B', 'C', '4'],
       ['A', 'B', 'C', '5']],
      dtype='<U1')

答案 3 :(得分:0)

一种实现方法是:

import numpy as np

a = np.array(["A", "B", "C"])
b = np.array(["1", "2", "3", "4", "5"])

output=[]

for i in list(b):
    a_list=list(a)
    a_list.append(i)
    output.append(a_list)

output=np.asarray(output)

print(output)

此结果如预期:

[['A' 'B' 'C' '1']
 ['A' 'B' 'C' '2']
 ['A' 'B' 'C' '3']
 ['A' 'B' 'C' '4']
 ['A' 'B' 'C' '5']]
>>> 
相关问题