numpy 包含单位列的矩阵

pxq42qpu  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(172)

我想在Python中实现以下内容。给定一个长度为N的向量v,每个元素取整数集合0,1,2,...,d中的值,我想创建一个长度为d的新向量w,它在第i个位置存储数字i在v中出现的次数。我假设知道d,N和v。
作为示例,假设d = 3并且N=5,并且v =(0,0,1,3,2)。然后我想要w[0] = 2,w[1] = 1,w[2] = 1,w[3] = 1,即w =(2,1,1,1)。
我在下面尝试了一下。我的问题是,我是否可以使用内置的numpy函数更有效地做到这一点,特别是避免在N上进行for循环?我需要在一个长时间的迭代模拟中多次使用这个函数,所以我想优化它。
我的尝试:

import numpy as np

d = 3
N = 5
v = np.array([0,0,1,3,2])
ID = np.eye(d+1)

w = np.zeros(N)

for i in range(0,N):
    w[i] = np.sum(v==i)
emeijp43

emeijp431#

这就是bincount

w = np.bincount(v, minlength=d+1)

输出:

array([2, 1, 1, 1])

相关问题