如何使用多个出现的切片索引来实现快速的numpy数组计算?

我最近想知道如何绕过以下numpy行为。 从一个简单的例子开始:

    import numpy as np

a = np.array([[1,2,3,4,5,6,7,8,9,0],[11,12,13,14,15,16,17,18,19,10]])

然后:

b = a.copy()
b[:,[0,1,8]] = b[:,8]] + 50
print(b)

...打印结果:

[[51 52  3  4 55  6  7  8 59  0]
 [61 62 13 14 65 16 17 18 69 10]]

然后将一个索引加倍到切片中:

c = a.copy()
c[:,8]] = c[:,8]] + 50
print(c)

给予:

[[51 52  3  4 55  6  7  8 59  0]
 [61 62 13 14 65 16 17 18 69 10]]

(简而言之;他们做同样的事情)

我还能为索引4执行两次吗? 或更实际地;让slice元素给我r次:我们可以让上述表达式应用r次,而不是numpy只考虑一次吗?另外,如果我们用每次出现i时都不同的方式代替“ 50”?

对于我当前的代码,我使用:

w[p1] = w[p1] + D[pix]

我将“ pix”,“ p1”定义为一些dtype int,相同长度和一些整数的numpy数组,它们可能出现多次。

(所以一个人可能同时拥有pix = [...,1,3,...],而p1 = [...,21,32,23 ,11,78,...],因此,仅靠索引1的前1个和对应的21个就被删除了。)

当然,使用for循环可以轻松解决此问题。关键是数组的整数和大小都很大,因此使用for循环而不是有效的numpy-array例程会花费大量计算资源。有任何想法,现有文档的链接等吗?

peak288 回答:如何使用多个出现的切片索引来实现快速的numpy数组计算?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3163733.html

大家都在问