Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “理解NumPy数据类型”;";用绳子_Python_Arrays_Numpy_Char - Fatal编程技术网

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')