[英]Indexing numpy array with half-values efficiently
我想用整數和半值索引一個 numpy 數組。 這大致是我的想法:
>>> a = HalfIndexedArray([[0,1,2,3],[10,11,12,13],[20,21,22,23]])
>>> print(a[0,0])
0
>>> print(a[0.5,0.5])
11
>>> print(a[0,1+0.5])
3
只有半值用作索引,所以我想可以構造某種包裝器,將值存儲在整數索引處,通過乘以給定的小數索引來訪問這些值。
可以構造某種輔助函數來獲取和設置相應的值; 但是,如果仍然可以使用本機 numpy 索引功能(切片等),那就更好了。 此外,顯着的開銷是不可接受的,因為這些數組將用於數值計算。
它基本上是我正在尋找的一些有效的語法糖:這是可以在 numpy(或更廣泛地說,在 Python)中實現的嗎?
為了改變[]
的行為,您需要重新實現__getitem__
類方法。 由於您的課程在其他情況下將表現為標准列表,因此您可以這樣做:
class HalfIndexedList(list):
def __getitem__(self, key):
return super().__getitem__(int(key * 2))
a = HalfIndexedList([10,11,12,13,14,15])
for i in range(0, 6):
print(f"{i/2 = }, {a[i/2] = }")
但是,我同意@Otto 的回答以及處理輸入端以獲得更簡潔的代碼要好得多的說法。 半索引沒有意義,而且非常不直觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.