所以我有两个数组
a=np.array([1,2,3])
b=np.array(['a','b','c'])
我需要结合这样才能得到
array([1,'a'],[2,'b'],[3,'c'])
我认为这很简单
np.stack((a,b),axis=1)
会这样做,但它会把所有东西变成一个字符串。我该如何避免?
array([['1', 'a'],
['2', 'b'],
['3', 'c']],
dtype='<U21')
答案 0 :(得分:1)
你无法避免它,因为它们需要属于同一类型。但是,您可以这样做:
import numpy as np
a = np.array([1,2,3])
b = np.array(['a','b','c'])
x = np.stack((a,b),axis=1)
x[0][0].astype(np.int)
>> 1
x[0][1]
>> 'a'
但这不是最好的代码。
答案 1 :(得分:1)
您可以将它们放在结构化数组中
In [104]: a=np.array([1,2,3])
...: b=np.array(['a','b','c'])
In [105]: arr = np.empty(a.shape[0], dtype='int,U4')
In [106]: arr
Out[106]:
array([(0, ''), (0, ''), (0, '')],
dtype=[('f0', '<i4'), ('f1', '<U4')])
In [107]: arr['f0']=a
In [108]: arr['f1']=b
In [109]: arr
Out[109]:
array([(1, 'a'), (2, 'b'), (3, 'c')],
dtype=[('f0', '<i4'), ('f1', '<U4')])
In [111]: arr['f1']
Out[111]:
array(['a', 'b', 'c'],
dtype='<U4')
https://docs.scipy.org/doc/numpy/user/basics.rec.html
如果没用,请坚持使用单独的数组。