【发布时间】:2020-01-02 17:35:11
【问题描述】:
给定两个numpy向量a和b,如果a[i]==b[j],我想创建一个二维数组A和A[i,j]=True。我可以执行以下 for 循环。但是我想知道我是否可以在没有for循环的情况下更快地获得结果。
def f(x, y):
d = np.zeros((len(x),len(y)))
for i in range(len(x)):
d[i, np.argwhere(y==x[i])]=1
return d
a = np.array([1,2,3,1,3,4])
b = np.array([1,1,2,2,2,3,4,5])
而f(a,b) 是:
array([[1., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 1., 1., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0.],
[1., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0., 0., 1., 0.]])
【问题讨论】:
标签: python numpy numpy-ndarray array-broadcasting