Python 输入数组相等时索引矩阵元素
我有一个矩阵,我希望能够在使用两个数组索引某些元素时更改它们的值,而不使用循环 比如说Python 输入数组相等时索引矩阵元素,python,arrays,numpy,matrix,indexing,Python,Arrays,Numpy,Matrix,Indexing,我有一个矩阵,我希望能够在使用两个数组索引某些元素时更改它们的值,而不使用循环 比如说 import numpy as np A = np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]) b = np.array([0, 1, 2]) c = np.array([2, 3, 1, 1]) 如果b中的索引i等于c中的索引j,则访问A[i,j] 我试过了 A[b, c] = 1 及 但我
import numpy as np
A = np.array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])
b = np.array([0, 1, 2])
c = np.array([2, 3, 1, 1])
如果b中的索引i等于c中的索引j,则访问A[i,j]
我试过了
A[b, c] = 1
及
但我没有得到正确的结果
我相信结果应该是
A = array([[0, 0, 0, 0],
[0, 0, 1, 1],
[1, 0, 0, 0]])
您可以使用
numpy.meshgrid
将一维索引数组扩展为二维索引数组:
import numpy as np
A = np.array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])
b = np.array([0, 1, 2])
c = np.array([2, 3, 1, 1])
C,B = np.meshgrid(c,b)
A[B==C] = 1
print(A)
给予
你的意思是
np.array
而不仅仅是array
。。对吧?是的,对不起。我使用的是numpy,您需要迭代b
和c
以查看哪些索引相等。。。我相信这是最直接的方法??我应该指定,但我特别寻找一种没有任何循环的方法。没有循环,形状不同,这应该很有趣。
import numpy as np
A = np.array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])
b = np.array([0, 1, 2])
c = np.array([2, 3, 1, 1])
C,B = np.meshgrid(c,b)
A[B==C] = 1
print(A)
[[0 0 0 0]
[0 0 1 1]
[1 0 0 0]]