[英]Float indexer to numpy array
我想制作一個以浮點數作為索引的numpy數組(例如,如果Pandas系列具有浮點型索引,則類似)。 所以讓我解釋一下。 我想要類似的東西:
i = np.array([(5.,1), (6.,2)], dtype=[('foo', 'f4'),('bar', 'i4')])
如果第一種類型(“ foo”類型)可以用作索引器。 所以我可以做
print(i[:5.5])
它將打印1
或(5., 1)
。
我很確定Numpy可以做到,但我不知道該怎么做。
您可能需要邏輯索引:
i[i['foo'] < 5.5]
# array([(5.0, 1)],
# dtype=[('foo', '<f4'), ('bar', '<i4')])
i[:5.5]
沒有明顯的含義。
i[:5]
表示數組(或列表)的前5個元素。 i[:6]
第6,什么是它應該與做5.5
? floor(5.5)
天花板? 返回5個半元素? 5個元素以及第5個和第6個之間的線性插值?
實際上:5.5
可以工作(在1.11中),但是有警告:
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
數組中,字段確實具有名稱,例如i['foo']
。 它看起來像列標簽,但是將結構化字段與2d列混淆是危險的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.