用字符串理解 NumPy dtype “c”

目标:转换str到np.ndarray的bytes大小为1:


import numpy as np

np.array("abc", dtype=[whatever])

没有 dtype 的实际结果: array('abc', dtype='<U3')


预期结果:array([b'a', b'b', b'c'], dtype=[whatever]这让我可以使用切片来获得


我发现但不明白的解决方法:


np.array("abc", dtype='c')

# array([b'a', b'b', b'c'], dtype='|S1')

我通过反复试验发现了这个,认为这'c'可能意味着“char”


我不明白的是: 为什么要按现在dtype='c'的方式工作?根据arrays.dtypes 参考,它'c'是“复数浮点”的缩写,'|S1'而是长度为 1 的“以零结尾的字节(不推荐)”。


也直接使用 '|S1' asdtype忽略除第一个字符之外的每个字符,这不是我所期望的,但我想它只是将 the"abc"作为一个参数,b'a'如果仅将单个字节指定为dtype:


np.array("abc", dtype='|S1')

# array(b'a', dtype='|S1')

问题):


为什么按照现在dtype='c'的方式工作?

(如果dtype='c'只是“偶然”工作,那么这样做的“正确方法”是什么?)

PS: 是的,有一个np.chararray,但根据链接的文档:


chararray 类的存在是为了与 Numarray 向后兼容,不推荐用于新开发。从 numpy 1.4 开始,如果需要字符串数组,建议使用 dtype object_、string_ 或 unicode_ 数组,并使用 numpy.char 模块中的免费函数进行快速向量化字符串操作。


但是建议dtypes object_,string_并且unicode_不拆串入字符,但返回ndarray一个元素。


12345678_0001
浏览 217回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python