我有一個看起來像這個例子的ndarray:
[['000' '0.0008303259945444978']
['001' '0.001097105216902647']
['010' '0.009235959101850126']
['011' '0.00047129154937779666']
['100' '0.018205469077740434']
['101' '0.0013647687750767113']
['110' '0.94056678166667']
['111' '0.028228298617837884']]
我需要從第二列中選擇值,第一列中的對應值與特定條件匹配。
示例條件:字串的第二個和第三個位置(在第一列中)等于零。如果這是真的,請復制第二列中的相應值并ndarray使用它們創建新值。
uj5u.com熱心網友回復:
使用正常的理解串列,您可以執行以下操作:
[j for i, j in arr if i[1]=='0' and i[2]=='0']
# ['0.0008303259945444978', '0.018205469077740434']
您可以根據需要更改條件。
uj5u.com熱心網友回復:
你可以通過索引來做這樣的事情。因此,僅作為示例,如果您想要其中第一列在第二和第三位有兩個零的行,則這些值必須可以除以100. 對此,如果我們要使用 NumPy,我們可以將陣列型別轉換為浮點數來檢查它是否可以被100. 這將得到一個布爾掩碼陣列帽子可用于索引以選擇預期的行:
mask = a.astype(np.float64)[:, 0] % 100 == 0
# [ True False False False True False False False]
a[mask, 1]
# ['0.0008303259945444978' '0.018205469077740434']
或者
a[a[:, 0].astype(np.float64) % 100 == 0, 1]
這只是基于您的示例的示例。您可以創建所需的面具并進行處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487623.html
