簡體   English   中英

浮點索引器到numpy數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM