python – 重新排列中的自动字符串长度
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 重新排列中的自动字符串长度,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1315字,纯文字阅读大概需要2分钟。
内容图文
![python – 重新排列中的自动字符串长度](/upload/InfoBanner/zyjiaocheng/775/f09c6c98a1da4a9a84d8dde89ca89ed4.jpg)
如果我以这种方式创建一个recarray:
In [29]: np.rec.fromrecords([(1,'hello'),(2,'world')],names=['a','b'])
结果看起来很好:
Out[29]:
rec.array([(1, 'hello'), (2, 'world')],
dtype=[('a', '<i8'), ('b', '|S5')])
但是,如果我想指定数据类型:
In [32]: np.rec.fromrecords([(1,'hello'),(2,'world')],dtype=[('a',np.int8),('b',np.str)])
该字符串设置为零长度:
Out[32]:
rec.array([(1, ''), (2, '')],
dtype=[('a', '|i1'), ('b', '|S0')])
我需要为所有数值类型指定数据类型,因为我关心int8 / 16/32等,但我想从自动字符串长度检测中受益,如果我没有指定数据类型.我尝试用无替换np.str,但没有运气.我知道我可以指定’| S5′,但我事先并不知道字符串长度应该设置为什么.
解决方法:
如果您不需要将字符串作为字节进行操作,则可以使用对象数据类型来表示它们.这基本上存储指针而不是实际的字节:
In [38]: np.array(data, dtype=[('a', np.uint8), ('b', np.object)])
Out[38]:
array([(1, 'hello'), (2, 'world')],
dtype=[('a', '|u1'), ('b', '|O8')])
或者,亚历克斯的想法会很好:
new_dt = []
# For each field of a given type and alignment, determine
# whether the field is an integer. If so, represent it as a byte.
for f, (T, align) in dt.fields.iteritems():
if np.issubdtype(T, int):
new_dt.append((f, np.uint8))
else:
new_dt.append((f, T))
new_dt = np.dtype(new_dt)
np.array(data, dtype=new_dt)
哪个应该屈服
array([(1, 'hello'), (2, 'world')],
dtype=[('f0', '|u1'), ('f1', '|S5')])
内容总结
以上是互联网集市为您收集整理的python – 重新排列中的自动字符串长度全部内容,希望文章能够帮你解决python – 重新排列中的自动字符串长度所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。