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]]