spa*_*tti 2 python numpy vectorization
我有一个a值数组,其值在每个索引处idx我想重复一定b[idx]次数,idx在另一个数组 ( b)中的相同索引处给出,如下所示:
a = numpy.array([1, 2, 3 ,4, 5])
b = numpy.array([2, 3, 1, 2, 4])
Run Code Online (Sandbox Code Playgroud)
期望的输出:
c = numpy.array([1, 1, 2, 2, 2, 3, 4, 4, 5, 5, 5, 5])
Run Code Online (Sandbox Code Playgroud)
我意识到我可以做这样的事情:
len_a = numpy.shape(a)[0]
sum_b = sum(b)
c = numpy.zeros((1, 0))
for idx in range(len_a):
repeated_a = numpy.repeat(a[idx], b[idx])
repeated_a = numpy.reshape(repeated_a, (1, numpy.shape(repeated_a)[0]))
c = numpy.hstack((c, repeated_a))
Run Code Online (Sandbox Code Playgroud)
但是,循环不是一个好的选择,因为它很慢。 我将如何让这个更快?也许某种形式的矢量化。
您正在寻找为此目的而设计的内置重复功能。只需将两个数组都输入到函数中:
np.repeat(a,b)
#[1 1 2 2 2 3 4 4 5 5 5 5]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |