我需要使用Numpy操作大量数据。此数据集包含下游处理所需的字符串。当我将数据转换为结构化数组时,我指定数据是一个字符串。我创建了没有任何错误的记录数组,但是,当我尝试将数据转换回嵌套列表列表时,我的字符串数据消失了。这是一个样本......
import numpy as np
data = [
[100.0, 400.0, 'stringhere'],
[200.0, 500.0, 'another sting'],
]
npdata = np.array(map(tuple, data),
dtype=([('x', 'float64'), ('y', 'float64'), ('label', 'S'), ])
)
for entry in npdata:
print list(entry)
这打印...... [100.0,400.0,''] [200.0,500.0,'0']
我是结构化数组的新手,所以我假设我要么错误地指定了我的数据类型,要么我误解了结构化数组如何处理字符串。如何从结构化数组中获取字符串数据?
答案 0 :(得分:1)
您需要指定字符串dtype中的字节数。否则,numpy将字节数设置为1:
In [44]: npdata['label'].dtype
Out[44]: dtype('S1')
并截断您的数据。
因此,例如,如果将S
替换为|S20
,则字符串dtype将支持最多20个字节的字符串:
npdata = np.array(map(tuple, data),
dtype=([('x', 'float64'), ('y', 'float64'), ('label', '|S20'), ]))
for entry in npdata:
print list(entry)
的产率:
[100.0, 400.0, 'stringhere']
[200.0, 500.0, 'another sting']