簡體   English   中英

如何替換大於幾個值的Python NumPy Array的所有元素?

[英]How to replace all elements of Python NumPy Array that are greater than a several values?

我知道我可以替換大於某些值的Python NumPy Array的所有元素:

np.putmask(A, A>0.5, 5)

其中A>0.5是閾值,5是新的替代值。 但是,如何在更多條件下使用它? 例如:

if x.all <0:
    return 00.1
elif x.all >0:
    return 1

其中x是一個數組。 我試過了:

np.putmask(x, x<0, 00.1)

np.putmask(x, x>0, 1)

但是,我想一行完成。 是否知道如何使用putmask或任何其他方法在一行中進行這種類型的替換?

您在尋找雙重np.where即

A = np.array([0,1,2,3,1,-5,-6,-7])

k = np.where(A>0,1,np.where(A<0,0.01,A))

或者,您可以將np.select用於多個條件。

k = np.select([A>0,A<0],[1,.01],A)

[ 0.    1.    1.    1.    1.    0.01  0.01  0.01]

您可以創建每個條件的掩碼(邏輯數組),然后應用所有掩碼。

# Create masks
mask1 = (x < 0)
mask2 = (x > 0)
# Apply masks
x[mask1] = 0.1
x[mask2] = 1

如果您真的需要單行:

mask1 = (x < 0); mask2 = (x > 0); x[mask1] = 0.1; x[mask2] = 1

您也可以像示例代碼中一樣使用putmask函數:

mask1 = (x < 0); mask2 = (x > 0); np.putmask(x, mask1, 00.1); np.putmask(x, mask2, 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM