3
A
回答
7
「我能找到的這個矩陣的最小值是不是在一個精確的範圍內?
如果你只關心對滿足一定條件的最低值,而不是位置,然後
>>> numpy.random.seed(1)
>>> m = numpy.random.randn(5.,5.)
>>> m
array([[ 1.62434536, -0.61175641, -0.52817175, -1.07296862, 0.86540763],
[-2.3015387 , 1.74481176, -0.7612069 , 0.3190391 , -0.24937038],
[ 1.46210794, -2.06014071, -0.3224172 , -0.38405435, 1.13376944],
[-1.09989127, -0.17242821, -0.87785842, 0.04221375, 0.58281521],
[-1.10061918, 1.14472371, 0.90159072, 0.50249434, 0.90085595]])
>>> m[~ ((m < 0.5) | (m > 0.8))].min()
0.50249433890186823
如果你想通過argmin的位置,那麼這是一個有點棘手,但一個方法是使用屏蔽陣列:
>>> numpy.ma.array(m,mask=((m<0.5) | (m > 0.8))).argmin()
23
>>> m.flat[23]
0.50249433890186823
請注意,此處的條件會翻轉,因爲對於排除的值,掩碼爲True,而不是包含的值。
更新:看來,通過「指定範圍內」你不是說最小值是不是有些範圍內,但要基於的排除從搜索的矩陣的部分x,y座標。這裏有一種方法(與之前的矩陣相同):
>>> xx, yy = numpy.indices(m.shape)
>>> points = ((xx == 0) & (yy == 0)) | ((xx > 2) & (yy < 3))
>>> points
array([[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[ True, True, True, False, False],
[ True, True, True, False, False]], dtype=bool)
>>> m[points]
array([ 1.62434536, -1.09989127, -0.17242821, -0.87785842, -1.10061918,
1.14472371, 0.90159072])
>>> m[points].min()
-1.1006191772129212
如果您需要位置,請使用相應的蒙版陣列變體。 [編輯使用索引而不是mgrid;我真的忘了它,直到它今天在另一個答案使用!]
如果我仍然是錯的:^),這也不是你所追求的,請編輯你的問題,包括一個3x3您想要的輸入和輸出的例子。
4
我猜這就是你想達到什麼目的:
Argmin使用數組:
>>> from numpy import *
>>> a = array([2,3,4])
>>> argmin(a)
0
>>> print a[argmin(a)]
2
Argmin與矩陣:
>>> b=array([[6,5,4],[3,2,1]])
>>> argmin(b)
5
>>> print b[argmin(b)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: index out of bounds
同樣的方法進行索引沒有爲數組工作。原因是argmin(以及argmax)返回變量的索引 - 在矩陣的情況下,您需要將您的n維矩陣轉換爲一維索引數組。
爲了做到這一點,你需要調用ravel
:
>>> print b
[[6 5 4]
[3 2 1]]
>>> ravel(b)
array([6, 5, 4, 3, 2, 1])
當你與argmin結合拉威爾,你必須寫:
>>> print ravel(b)[argmin(b)]
相關問題
- 1. 優雅的解決方案?
- 2. SQL查詢 - 需要優雅的解決方案
- 3. 更好的解決方案重複代碼,需要優雅
- 4. VBA複選框:需要一個優雅的解決方案
- 5. 類設計的優雅解決方案
- 6. 只讀值的優雅解決方案
- 7. 沒有javascript的優雅解決方案
- 8. Cakephp,數量優雅的解決方案?
- 9. 尋求優雅的LINQ解決方案
- 10. JavaScript樹 - 優雅的解決方案?
- 11. 優雅ie6懸停css解決方案
- 12. 根據需要採取生成的值的優雅解決方案
- 13. 需要一個簡單的,C++賓果板的優雅解決方案
- 14. 需要較短/更優雅的解決方案,以蟒蛇while循環
- 15. 需要'System.IndexOutOfRangeException'解決方案
- 16. 需要解決方案urllib2
- 17. 需要HTTPRequest解決方案
- 18. 在Numpy中將矢量追加到矩陣的優雅解決方案?
- 19. 在命名空間中解析XElements的優雅解決方案
- 20. 解析內存轉儲(尋找更優雅的解決方案)
- 21. C#和設計模式 - 需要一個優雅的解決方案,以解決常見問題
- 22. 需要Thread.sleep()的替代解決方案;
- 23. 需要解決方案我的程序
- 24. Matlab需要的解決方案
- 25. 需要ngfor的解決方案
- 26. 需要簡單的sql解決方案
- 27. 最優雅的是java的數字()解決方案
- 28. 優雅的解決方案,以嵌套的else-if鏈
- 29. 紅寶石複雜的查詢優雅的解決方案
- 30. 推特推動器傳送帶優化解決方案需要
嗯,這不完全是我想要的,但它似乎很有趣,我想找到一個數組的最小值,使得這個最小值應該位於索引x到y之間。這個範圍可能連接或斷開,所以說[x-x1和y-y1]或連接[x-y]。 – JustInTime 2011-06-06 11:20:51