在Python3中,我做到了:
s = StringIO(u"1,1.3,abcde\n2,1.3,test")
data = numpy.genfromtxt(s, dtype=[int,float,'U10'], delimiter=',', names=None)
我得到:
array([(1, 1.3, 'abcde'), (2, 1.3, 'test')],
dtype=[('f0', '<i8'), ('f1', '<f8'), ('f2', '<U10')])
我想得到一个常规的numpy数组,没有如下名称:
array([[1, 1.3, 'abcde'],
[2, 1.3, 'test']])
有可能吗
您得到的是一个“结构化数组”,它优于“常规数组”,因为它支持异构数据类型。两列是数字,一列是文本,所以将数据折叠成没有结构的纯
numpy.ndarray
是没有意义的。但如果你愿意,你可以:这将为您提供一个包含所有字符串的
ndarray
:但这很少是个好主意。如果我们有更多的背景,我们也许能够提出一个更好的整体方法
使用文本列表:
结构化阵列:
尝试指定对象-每个项都有自己的类型:
它不尝试将任何字符串转换为数字
converters
正确转换列,但由于某些原因,仍然生成结构化数组:但您可以通过列表将结构化数组转换为对象数据类型:
另一个选择是自己拆分行,建立一个列表列表
genfromtxt
是这样做的,没有更多的钟和口哨但是请注意,您不能对该对象数组和数字数组进行数学运算,甚至不能对结构化数组的数字字段进行数学运算
相关问题 更多 >
编程相关推荐