[英]How to find the minimum and maximum value from an numpy array image in python?
[英]How to find the minimum value from a part of a column in numpy array?
我有一個如下的numpy數組,其中有三列,col.1是距離,col。 2和3是節點的ID。 我想找到距第一列的最小距離,但僅適用於節點ID 0。
distance i j
[[ 1.18801546 0. 1. ]
[ 2.30434659 0. 2. ]
[ 3.46650731 0. 3. ]
[ 0.85449778 0. 4. ]
[ 0.84375971 0. 5. ]
[ 2.66327706 0. 6. ]
[ 1.84376278 0. 7. ]
[ 1.29614483 0. 8. ]
[ 2.86955783 0. 9. ]
[ 1.55222839 1. 2. ]
[ 2.56904021 1. 3. ]
[ 0.56480212 1. 4. ]
[ 0.81877367 1. 5. ]
[ 2.87466569 1. 6. ]
[ 1.01649384 1. 7. ]
[ 1.95662814 1. 8. ]
[ 3.15455155 1. 9. ]
[ 1.1897445 2. 3. ]
[ 1.65880881 2. 4. ]
[ 2.21427178 2. 5. ]
[ 2.12770111 2. 6. ]
[ 0.59811712 2. 7. ]
[ 2.15373458 2. 8. ]
[ 2.47151944 2. 9. ]
[ 2.78849347 3. 4. ]
[ 3.29699194 3. 5. ]
[ 2.90479808 3. 6. ]
[ 1.6405647 3. 7. ]
[ 3.2628552 3. 8. ]
[ 3.24135083 3. 9. ]
[ 0.59483003 4. 5. ]
[ 2.55441835 4. 6. ]
[ 1.22876339 4. 7. ]
[ 1.62616729 4. 8. ]
[ 2.7776452 4. 9. ]
[ 3.07635954 5. 6. ]
[ 1.7483827 5. 7. ]
[ 1.993107 5. 8. ]
[ 3.26526698 5. 9. ]
[ 2.34443787 6. 7. ]
[ 1.59405468 6. 8. ]
[ 0.46781919 6. 9. ]
[ 1.92762241 7. 8. ]
[ 2.69818642 7. 9. ]
[ 1.85007201 8. 9. ]]
我嘗試使用
print all_data[np.argmax(all_data[:, 0]), 1]
但是它不僅返回我想要的節點0,而且返回整個列的最小值。 如何獲得僅與節點“ 0”關聯的最小值? 另外,argmin值似乎已取整! 任何想法如何解決這些問題? 順便說一下,我正在使用numpy數組。
您可以找到帶有0作為第二個索引的元素,其中all_data[all_data[:, 1]==0]
:
print all_data[np.argmax(all_data[all_data[:, 1]==0]), 1]
從OP問題
如何獲得僅與節點“ 0”關聯的最小值?
In [1]: import numpy as np
In [2]: a=np.array([[ 1.18801546, 0., 1., ],
...: [ 2.30434659, 0., 2., ],
...: [ 3.46650731, 0., 3., ],
...: [ 0.85449778, 0., 4., ],
...: ...
...: [ 1.29614483, 0., 8., ],
...: [ 2.86955783, 0., 9., ],])
具有進口和numpy的創建陣列作為a
,我們創建使用布爾陣列上它的視圖a[:,1]==0.0
,並找到使用的第一列的最小值numpy
功能min
,用可選參數axis=0
以限制在第0
列中搜索最小值。
In[3]: np.min(a[a[:,1]==0.0],axis=0)
Out[3]: array([ 0.84375971, 0. , 1. ])
就這樣。
這將為您提供每一列的最小值,如果您希望在列0中獲得最小值,則表達式
np.min(a[a[:,1]==0.0],axis=0)[0]
給您--- OTOH,如果您要使行具有最小值,則有點不同
a[np.argmin(a[a[:,1]==0],axis=0)[0]]
即使我們在一個表達式中寫a
三遍這個事實看起來似乎並不那么容易理解,但這確實可以做到。
為列0中的選定值過濾數據,然后計算最小距離:
selected_value = 0
value_col = 0 # The column containing the selected value.
dist_col = 1 # The column containing the distance value.
min_val = all_data[all_data[:, value_col] == selected_value, dist_col].min()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.