设N
是形状为(m,n)
的numpy数组,A
是索引(m,)
的数组,包含0和n-1
之间的值,包括。
如果I i
是从0到m-1包括的索引,那么我想要访问元素N[i,A[i]]
。
举例来说:
import numpy as np
m = 2000
n = 10
N = np.zeros((m,n))
A = np.random.choice(n, m)
N[???, A] = 1
字符串
我期望上面的示例代码生成一个形状为(m,n)
的数组N,最初所有的零,然后设置N[i,j]=1
,其中A[i]=j
。
我尝试了N[:, A]=1
,但它将数组N
的所有元素都更改为1,这不是我想要实现的。
2条答案
按热度按时间vx6bjr1n1#
使用
:
索引所有行,所以执行N[:,A] = 1
是告诉numpy获取所有行,并在A
列中将值设置为1。您只需要一对一的行和列选择。最简单的方法是使用np.arange
。字符串
现在,A中的每个值都有一个对应的行,这导致
m
行和列选择。gmxoilav2#
您可以按如下方式设置条件
N[i,j]=1 where A[i] == j
:字符串