小编Geo*_*e K的帖子

涉及放置填充位置的广播问题

介绍

我有一个func可矢量化的函数,我使用np.frompyfunc. for我不想使用嵌套循环,而是只想调用它一次,因此我需要用np.newaxis's填充输入。

我的目标是摆脱两个嵌套for循环并改用numpy.array广播功能。

这是 MWEfor循环(我想摆脱 for 循环,而是填充变量c_0, c_1, rn_1, rn_2,并factor在调用myfunc.

感兴趣问题的 MWE

for i, b_0 in enumerate(b_00):
    for j, b_1 in enumerate(b_11):
        factor = b_0 + b_1
        rn = (b_0 * coord + b_1 * coord2) / factor
        rn_1 = coord - rn
        rn_2 = coord2 - rn
        results = np.add( results,np.prod(myfunc(c_0[:,None,:], c_1[None,:,:], rn_1, rn_2, factor), axis=2) …
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization python-3.x array-broadcasting

5
推荐指数
1
解决办法
253
查看次数

有没有一种优雅的方法来对 Julia 中静态数组向量中的列求和?

我将粒子的速度存储为向量向量。每行都是一个 SVector,其索引为 x、y、z 速度。

SVector 的算术速度非常好,但它们有点……难以操作。我将如何以比以下更优雅的方式将矢量中的所有 x、y、z 平方速度相加

using StaticArrays
n = 5
v = [SVector{3}(rand(), rand(), rand())  for i = 1:n]
x, y, z = 0.0, 0.0, 0.0
for i=1:n
    x += v[i][1]^2
    y += v[i][2]^2
    z += v[i][3]^2
end
sumv = SVector{3}(x, y, z)
Run Code Online (Sandbox Code Playgroud)

如果我只想在我的速度中对 x、y、z 求和,而不需要平方,那么 Julia 很简单,只会sum(v)给我一个求和列的向量。

我的一种解决方案是

sum([v[i].^2 for i=1:n])
Run Code Online (Sandbox Code Playgroud)

但必须有一个更简单的解决方案,不需要理解?

arrays julia

4
推荐指数
1
解决办法
88
查看次数