[英]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.