Python “理解NumPy数据类型”;";用绳子
目标:将Python “理解NumPy数据类型”;";用绳子,python,arrays,numpy,char,Python,Arrays,Numpy,Char,目标:将str转换为np.ndarray大小为1的字节数: import numpy as np np.array("abc", dtype=[whatever]) 没有数据类型的实际结果:array('abc',dtype='对我来说似乎是个bug。请注意,如果不指定字符代码“c”后的字节数,那么数据类型实际上是“S1”,而不是复杂的浮点。请查看数据类型的这些属性: >>> dt_S1 = np.dtype('S1') >>> dt_S1, dt_S1.k
str
转换为np.ndarray
大小为1的字节数:
import numpy as np
np.array("abc", dtype=[whatever])
没有数据类型的实际结果:array('abc',dtype='对我来说似乎是个bug。请注意,如果不指定字符代码“c”后的字节数,那么数据类型实际上是“S1”,而不是复杂的浮点。请查看数据类型的这些属性:
>>> dt_S1 = np.dtype('S1')
>>> dt_S1, dt_S1.kind, dt_S1.name, dt_S1.char
(dtype('S1'), 'S', 'bytes8', 'S')
>>> dt_c = np.dtype('c')
>>> dt_c, dt_c.kind, dt_c.name, dt_c.char))
(dtype('S1'), 'S', 'bytes8', 'c')
>>> dt_c8 = np.dtype('c8')
>>> dt_c8, dt_c8.kind, dt_c8.name, dt_c8.char
(dtype('complex64'), 'c', 'complex64', 'F')
因此,人们期望np.array('abc',dtype='c')
和np.array('abc',dtype='S1')
返回相同的结果array(b'a',dtype='S1')
,或者前者给出一个与np.array('abc',dtype='c8')
相同的错误
Imho,完成任务的正确方法是:
np.array(list('abc'), dtype='S1')
“c”列在'Array-protocol type strings(参见数组接口)
部分下,字母后面必须跟一个大小数字,如np.dtype('c16')
中所示。它不适用于Python代码中的独立“c”字符串。np.typecodes['Character']
返回“c”。还要比较np.dtype('c'),np.dtype('c8'),npdtype('c4'),np.dtype('S3'),np.dtype('S3'),@hpaulj我知道我使用'c'
的结果不是复数,而是字节字符。但即使np.typecode['Character']
返回'c'
,np.array(“abc”,dtype=np.Character)
不返回与np.array(“abc”,dtype='c')相同的值。
。
>>> dt_S1 = np.dtype('S1')
>>> dt_S1, dt_S1.kind, dt_S1.name, dt_S1.char
(dtype('S1'), 'S', 'bytes8', 'S')
>>> dt_c = np.dtype('c')
>>> dt_c, dt_c.kind, dt_c.name, dt_c.char))
(dtype('S1'), 'S', 'bytes8', 'c')
>>> dt_c8 = np.dtype('c8')
>>> dt_c8, dt_c8.kind, dt_c8.name, dt_c8.char
(dtype('complex64'), 'c', 'complex64', 'F')
np.array(list('abc'), dtype='S1')