sen*_*rle 37
一种方法可能是使用记录数组."列"不会像标准numpy数组的列,但对于大多数用例,这就足够了:
>>> a = numpy.array(['a', 'b', 'c', 'd', 'e'])
>>> b = numpy.arange(5)
>>> records = numpy.rec.fromarrays((a, b), names=('keys', 'data'))
>>> records
rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)],
dtype=[('keys', '|S1'), ('data', '<i8')])
>>> records['keys']
rec.array(['a', 'b', 'c', 'd', 'e'],
dtype='|S1')
>>> records['data']
array([0, 1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以通过指定数组的数据类型来执行与标准数组类似的操作.这被称为" 结构化阵列 ":
>>> arr = numpy.array([('a', 0), ('b', 1)],
dtype=([('keys', '|S1'), ('data', 'i8')]))
>>> arr
array([('a', 0), ('b', 1)],
dtype=[('keys', '|S1'), ('data', '<i8')])
Run Code Online (Sandbox Code Playgroud)
不同之处在于记录数组还允许对各个数据字段进行属性访问.标准结构化数组没有.
>>> records.keys
chararray(['a', 'b', 'c', 'd', 'e'],
dtype='|S1')
>>> arr.keys
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'keys'
Run Code Online (Sandbox Code Playgroud)
ast*_*key 10
一个简单的解决方案:将您的数据转换为对象“O”类型
z = np.zeros((2,2), dtype='U2')
o = np.ones((2,1), dtype='O')
np.hstack([o, z])
Run Code Online (Sandbox Code Playgroud)
创建数组:
array([[1, '', ''],
[1, '', '']], dtype=object)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42843 次 |
| 最近记录: |