我想创建一个numpy数组,它将float作为索引(例如,如果它有一个浮点类型的索引,就会有一个Pandas Series)。所以让我解释一下。我想要这样的东西:
i = np.array([(5.,1), (6.,2)], dtype=[('foo', 'f4'),('bar', 'i4')])
如果第一种类型('foo'类型)可以用作索引器。所以我可以做到
print(i[:5.5])
它会打印1
或(5., 1)
。
我很确定Numpy有可能,我只是不知道如何。
答案 0 :(得分:2)
您可能需要逻辑索引:
i[i['foo'] < 5.5]
# array([(5.0, 1)],
# dtype=[('foo', '<f4'), ('bar', '<i4')])
答案 1 :(得分:0)
single row
没有明显的意义。
i[:5.5]
表示数组(或列表)的前5个元素。 i[:5]
第一个6.它应该对i[:6]
做什么? 5.5
?天花板?返回5个半元素? 5个元素加上第5和第6之间的线性插值?
实际上floor(5.5)
有效(在1.11中)但有警告:
:5.5
使用结构化数组,记录索引的工作方式相同:
In [346]: np.arange(10)[:5]
Out[346]: array([0, 1, 2, 3, 4])
In [347]: np.arange(10)[:5.5]
/usr/local/bin/ipython3:1: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
#!/usr/bin/python3
Out[347]: array([0, 1, 2, 3, 4])
切入结束是可以的 - 它只会返回所有内容。
In [349]: i = np.array([(5.,1), (6.,2)], dtype=[('foo', 'f4'),('bar', 'i4')])
In [350]: i[:5]
=====
Out[350]:
array([(5.0, 1), (6.0, 2)],
dtype=[('foo', '<f4'), ('bar', '<i4')])
In [351]: i[:5.5]
/usr/local/bin/ipython3:1: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
#!/usr/bin/python3
Out[351]:
array([(5.0, 1), (6.0, 2)],
dtype=[('foo', '<f4'), ('bar', '<i4')])
中的索引只是一种计算方式。没有索引或标签列表或数组。这是numpy
添加的内容,但它不是pandas
的一部分。在numpy
数组中,字段确实有名称,例如i
。它看起来像列标签,但将结构化字段与2d列混淆是危险的。