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.array定义数据类型时字符串变为空_Python_Arrays_Python 3.x_Numpy_Dtype - Fatal编程技术网

Python 为numpy.array定义数据类型时字符串变为空

Python 为numpy.array定义数据类型时字符串变为空,python,arrays,python-3.x,numpy,dtype,Python,Arrays,Python 3.x,Numpy,Dtype,当我尝试设置numpy.array的dtype时,遇到字符串变空的问题 import numpy as np data = [('peter', 182.37), ('parker', 179.24)] arr = np.array(data, dtype=np.dtype([('name', np.unicode), ('height', np.float16)])) print(arr) import numpy as np data = [('peter', 182.37), ('p

当我尝试设置
numpy.array
dtype
时,遇到字符串变空的问题

import numpy as np

data = [('peter', 182.37), ('parker', 179.24)]
arr = np.array(data, dtype=np.dtype([('name', np.unicode), ('height', np.float16)]))
print(arr)
import numpy as np

data = [('peter', 182.37), ('parker', 179.24)]
arr = np.array(data)
print(arr)
给出以下数组,其中字符串
'peter'
'parker'
现在都是
'

[('',182.4)('',179.2)]

如果未指定数据类型,字符串将按预期显示在
np.array

import numpy as np

data = [('peter', 182.37), ('parker', 179.24)]
arr = np.array(data, dtype=np.dtype([('name', np.unicode), ('height', np.float16)]))
print(arr)
import numpy as np

data = [('peter', 182.37), ('parker', 179.24)]
arr = np.array(data)
print(arr)
['彼得'182.37']

[parker'179.24']

问题:当字符串的数据类型为
np.unicode
np.string
时,为什么字符串变为空?
np.array
的字符串数据类型必须支持可变长度字符串。我们如何解决这个问题?谢谢大家!


使用Python 3.7.4、numpy 1.17.2

设置字符串长度,例如“U10”@hpaulj它可以工作!但是字符串的数据类型是否可以是可变长度的?我认为
'U10'
将最大长度设置为10。在
np.array(['one','three',…'))
中,它根据输入选择足够长的长度。在其他情况下,你只需要自己去做。与python字符串不同,numpy数据类型是固定的。您可以将Python字符串与“object”数据类型一起使用—pandas就是这么做的。您可以计算最长的名称
string_size=max([len(数据中的项[0]))
然后将其作为您的数据类型大小
arr=np.array(数据,dtype=np.dtype([('name',np.unicode,string_size),('height',np.float16)])传递
为什么要使用numpy数组来保存带有字符串的元组?