访问在Python 2.x的
问题描述:
阵列的列表的阵列内的元件考虑以下数据集提取使用numpy.genfromtxt():访问在Python 2.x的
data[0:3]
array([('T', 2, 8, 3, 5, 1, 8, 13, 0, 6, 6, 10, 8, 0, 8, 0, 8),
('I', 5, 12, 3, 7, 2, 10, 5, 5, 4, 13, 3, 9, 2, 8, 4, 10),
('D', 4, 11, 6, 8, 6, 10, 6, 2, 6, 10, 3, 7, 3, 7, 3, 9)],
dtype=[('f0', 'S1'), ('f1', '<i8'), ('f2', '<i8'), ('f3', '<i8'), ('f4', '<i8'), ('f5', '<i8'), ('f6', '<i8'), ('f7', '<i8'), ('f8', '<i8'), ('f9', '<i8'), ('f10', '<i8'), ('f11', '<i8'), ('f12', '<i8'), ('f13', '<i8'), ('f14', '<i8'), ('f15', '<i8'), ('f16', '<i8')])
我试图检索使用从所述第一2个阵列中的字母下面的代码,但它提供了第一个完整的数组,而不是每个数组中的第一个元素。
data[:2][0]
答
问题是数组的内容是元组。所以,当你要求data[:2][0]
时,它返回元组列表中的第0个元素,而不是每个元组的第0个元素。使用以下代码片段:
output = []
for i in range(2):
output += data[:2][i][0]
希望我帮了忙。
答
这是一个结构化数组,1d有很多字段。字段由名称访问,而不是 '列' 编号:
In [618]: data
Out[618]:
array([(b'T', 2, 8, 3, 5, 1, 8, 13, 0, 6, 6, 10, 8, 0, 8, 0, 8),
(b'I', 5, 12, 3, 7, 2, 10, 5, 5, 4, 13, 3, 9, 2, 8, 4, 10),
(b'D', 4, 11, 6, 8, 6, 10, 6, 2, 6, 10, 3, 7, 3, 7, 3, 9)],
dtype=[('f0', 'S1'), ('f1', '<i8'), ('f2', '<i8'), ('f3', '<i8'), ('f4', '<i8'), ('f5', '<i8'), ('f6', '<i8'), ('f7', '<i8'), ('f8', '<i8'), ('f9', '<i8'), ('f10', '<i8'), ('f11', '<i8'), ('f12', '<i8'), ('f13', '<i8'), ('f14', '<i8'), ('f15', '<i8'), ('f16', '<i8')])
一个元件或记录(显示像元组)
In [619]: data[0]
Out[619]: (b'T', 2, 8, 3, 5, 1, 8, 13, 0, 6, 6, 10, 8, 0, 8, 0, 8)
一个字段,一个数组:
In [620]: data['f0']
Out[620]:
array([b'T', b'I', b'D'],
dtype='|S1')
若干返回另一个结构化数组(如您的下一个问题所示,Access range of elements from an array Python)
In [621]: data[['f1','f2']]
Out[621]:
array([(2, 8), (5, 12), (4, 11)],
dtype=[('f1', '<i8'), ('f2', '<i8')])
它们显示为元组,但实际上是结构化数组的记录。你的'输出'将是一个像[84,73,68]这样的列表。这些是字节串的数字字节值,'[b'T',b'I',b'D']'。 – hpaulj
哦,我明白了......呃,我认为将字节转换为可用数据并不困难。无论如何,谢谢你的提示! – Rippr