簡體   English   中英

如何避免在python中通過for循環覆蓋值?

[英]How to avoid overwriting a value through for loop in python?

下面是我編碼的。 這里的問題是我在 A 矩陣中有值 1、2 和 3,因此在輸出 A 有所有值 1。
我期望的結果是:

A = np.matrix([[1, 2, 2, 1], 
               [1, 1, 3, 1],
               [1, 1, 1, 3]]).

任何幫助表示贊賞。 抱歉我寫得不好。 謝謝!

A = np.matrix([[1, 15, 23, 2], [3, 2, 56, 7], [2, 6, 8, 25]])
bound = np.array([1, 15, 25, 56])
for i in range(3, 0, -1):
    A[np.logical_and(bound[i - 1] <= A, A <= bound[i])] = i

一種方法是將更改的元素保存在單獨的mask_

mask_ = np.ones_like(A, dtype=bool)
for i in range(3,0,-1):
    mask = np.logical_and(bound[i - 1] <= A, A <= bound[i])
    A[np.multiply(mask_,mask)] = i
    mask_ = np.multiply(mask_,~mask)

輸出:

[[1 2 2 1]
 [1 1 3 1]
 [1 1 1 3]]

暫無
暫無

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

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