numpy.unravel_index()將一個形狀和一個平面索引放入一個數組中,並返回表示該數組中索引的元組。有沒有反過來?我可以手工計算它,但這似乎是它必須是某處的內置函數...NumPy是否具有unravel_index()的逆?
回答
由於numpy 1.6.0
(2011年5月)有一個內置的NumPy的功能ravel_multi_index
索引陣列的元組轉換成平索引的陣列,將邊界模式到多指數。
(這是由用戶雙波多黎各評論也提到,但確實應該出現一個答案)
答案在於numpy.ndarray.strides。見http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.strides.html
不可靠。當你使用數組片時,numpy通常會共享相同的數據,並執行大步技巧。比較arange(15).reshape((3,5))。strides(這將是一個很好的連續數組)和arange(35).reshape((7,5))[1 :: 2,:]。 。 – 2010-11-06 19:18:10
的確如此,而對此的不可見性可能是一種真正的痛苦。但是如果你正在計劃自己的步法(正如我在這裏),希望你能保證陣列是連續的。 – D0SBoots 2010-11-10 10:21:52
這工作:
def ravel_index(pos, shape):
res = 0
acc = 1
for pi, si in zip(reversed(pos), reversed(shape)):
res += pi * acc
acc *= si
return res
這不是一個內置的命令,但我一直使用下面的代碼片段,假設正在使用numpy的默認行主索引:
np.sum(np.array(index_tuple[:-1])*np.array(a_matrix.shape[1:]))+np.array(index_tuple[-1])
For Fortan-like(column-major)indexing,the index just need to be swap:
np.sum(np.array(index_tuple[1:])*np.array(a_matrix.shape[:-1]))+np.array(index_tuple[0])
在上面,index_tuple和a_matrix分別是包含感興趣的索引和被索引的矩陣的元組。這並沒有上面的問題與切片拍攝時的步幅相關聯。
從numpy 1.6開始,它是一個內置命令'numpy.ravel_multi_index',http://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel_multi_index.html 但這個問題很老。 – 2012-03-19 18:21:11
謝謝,我沒有注意到新命令,所以這對我非常有用。 – 2012-04-19 14:25:19
- 1. numpy array - argmax v argmax的總和的unravel_index
- 2. NumPy是否具有均勻性功能?
- 3. 是否存在System.Diagnostics.ConditionalAttribute的逆?
- 4. 加快numpy矩陣逆
- 5. 是否有可能在實體框架中具有逆導航屬性?
- 6. numpy中是否有簡單的墊子?
- 7. 是否有Numpy的配置文件?
- 8. 表索引是否可逆?
- 9. 有效地確定是否大排序numpy的陣列具有唯一的值
- 10. numpy的:具有索引
- 11. 僞逆SciPy的和numpy的之間
- 12. 逆轉numpy的蟒蛇對角線
- 13. NumPy的反轉不可逆矩陣
- 14. NumPy的矩陣求逆與float128型
- 15. Numpy不準確的矩陣求逆
- 16. numpy中是否有elliptictheta函數?
- 17. Numpy:是否有數組大小限制?
- 18. 按功能是否有任何numpy組?
- 19. numpy/python中是否有「freq」函數?
- 20. 它是否真的逆轉換矩陣?
- 21. std :: move的逆是否存在?
- 22. matlab中具有符號工具箱的矩陣的逆矩陣
- 23. 逆轉的CALayer面具
- 24. 對於for-else循環中的「else」是否有逆向行爲?
- 25. 是否有某種逆向過濾N'ary樹節點的算法?
- 26. c中是否有任何逆變的實際用法?
- 27. 是否有數據庫逆向工程的框架?
- 28. 是否存在具有繼承性的靜態類型編程語言,其中方法參數是逆變的?
- 29. PHP是否具有autovivification?
- 30. Wattpad是否具有API
我想你應該使用'ravel_multi_index'更新接受的答案之一;大多數人現在會使用'NumPy 1.6'或更新的版本。 – gerrit 2016-10-26 16:51:02