考虑np.array
a
a = np.concatenate(
[np.arange(2).reshape(-1, 1),
np.array([['a'], ['b']])],
axis=1)
a
array([['0', 'a'],
['1', 'b']],
dtype='|S11')
如何执行此连接以使a
的第一列保持整数?
答案 0 :(得分:2)
您可以使用numpy.object
作为dtype
来混合numpy数组中的类型:
>>> import numpy as np
>>> a = np.empty((2, 0), dtype=np.object)
>>> a = np.append(a, np.arange(2).reshape(-1,1), axis=1)
>>> a = np.append(a, np.array([['a'],['b']]), axis=1)
>>> a
array([[0, 'a'],
[1, 'b']], dtype=object)
>>> type(a[0,0])
<type 'int'>
>>> type(a[0,1])
<type 'str'>
答案 1 :(得分:2)
建议的重复建议制作重组或结构化数组。
Store different datatypes in one NumPy array?
在这种情况下:
In [324]: a = np.rec.fromarrays((np.arange(2).reshape(-1,1), np.array([['a'],['b']])))
In [325]: a
Out[325]:
rec.array([[(0, 'a')],
[(1, 'b')]],
dtype=[('f0', '<i4'), ('f1', '<U1')])
In [326]: a['f0']
Out[326]:
array([[0],
[1]])
In [327]: a['f1']
Out[327]:
array([['a'],
['b']],
dtype='<U1')
(我已经重新开放了,因为我认为这两种方法都需要承认。另外object
答案已经给出并被接受了。)