将索引器浮动到numpy数组

时间:2017-01-04 23:28:26

标签: python arrays numpy

我想创建一个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有可能,我只是不知道如何。

2 个答案:

答案 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列混淆是危险的。