尋找一種方法來可靠地識別numpy對象是否是一個視圖。numpy:可靠(非保守)指標,如果numpy數組是查看
相關問題已經提出了很多次(here,here,here),人們已經提出了一些解決方案,但都似乎有問題:
- 現在
pandas
使用的測試是指對某事物一個視圖如果my_array.base is not None
。這似乎總是能夠捕捉到意見,但也提供了大量的誤報(即使它不是報告某種情況的視圖)。 numpy.may_share_memory()
將檢查兩個特定的陣列,但不會回答一般- (@RobertKurn說是爲2012年最佳工具 - ?任何更改)
flags['OWNDATA'])
是reported (third comment first answer)在失敗一些案例。
(原因我感興趣的是,我正在執行寫入時複製的大熊貓,以及保守的指標是導致過度複製。)
關於numpy github跟蹤器的相關討論:https://github.com/numpy/numpy/issues/5604 –
描述爲誤報的情況似乎是當「創建副本」的操作實際上返回複印件。如果這被認爲是「不是視圖」,你可以嘗試檢查數組「base」的refcount以查看是否有其他引用,但這不會是完美的。我不認爲有可能可靠地檢測到這種事情。 – user2357112
也看到這個最近的SO問題,http://stackoverflow.com/questions/33467477/how-to-find-all-variables-with-identical-id。它提到了一個新的函數'np.shares_memory'。但是我在那裏指出,比較兩個已知變量是一回事,要問的另一個問題是數組與其他數組共享數據緩衝區。 – hpaulj