如何避免在python中通过for循环覆盖值?

如何避免在python中通过for循环覆盖值?,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,下面是我编的代码。这里的问题是我在A矩阵中有值1、2和3,因此在输出A中有所有值1。 我预期的结果是: A=np.矩阵([[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矩阵中有值1、2和3,因此在输出A中有所有值1。
我预期的结果是:

A=np.矩阵([[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
A=np.矩阵([[1,15,23,2],[3,2,56,7],[2,6,8,25])
绑定=np.array([1,15,25,56])
对于范围(3,0,-1)内的i:

一种[np.logical_和(bound[i-1]方法是将更改的元素保存在一个单独的
掩码中

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)

numpy.searchsorted
?感谢您的及时回复。输出矩阵的第一个元素是0。我希望有1如果
1
映射到
1
,为什么
15
也映射到
1
?它不应该是
2
?既然
绑定的
中有一个
15
,但无论如何,您可以试试
np.searchorded(bound,A,side='right')
以查看它是否提供了您所需的内容。哦,很抱歉!是15必须是2。我尝试了np.searchsorted(bound,A,side='right')。它不起作用
[[1 2 2 1]
 [1 1 3 1]
 [1 1 1 3]]