一種玩具情況我的問題:生成重新映射的numpy數組作爲視圖。
我有大小的numpy的陣列,比如,1000:
import numpy as np
a = np.arange(1000)
我也有一個「投影數組」 p其是從的映射一個到另一個陣列b:
p = np.random.randint(0,1000,(1000,1000))
這是很容易得到b使用「神奇索引」 一個:
b = a[p]
但b不是一個視圖,通過前幾次的問題/解答和numpy的文件指出。
不幸的是,在我的情況下,只有在值在較長的模擬過程,並使用花哨的索引在每次迭代變化獲得b變得非常昂貴。我只從b讀取,不要修改它。
我知道這是不可能(還)解決這個花哨的索引。
我想知道是否有人有類似的問題/瓶頸,並提出了一些其他的解決方法?
是否在每次迭代中都訪問了'b'?如果是的話,沒有比提取所有「b」更便宜的方法 - 您可能需要以其他方式改進算法。如果不是,你不需要建立'b',而是訪問'b [i,j]',你可以使用'a [p [i,j]]'。 – 2012-04-04 21:19:29