二维 numpy 数组的无循环操作

问题描述 投票:0回答:1

这对社区来说似乎是一个愚蠢的问题,但我没有设法在网上找到答案。想象一下有这样的情况:

area_vector = np.zeros(np.shape(normal))
for i in range(len(pressure)):
    area_vector[i] = area[i] * normal[i]

normal
是一个 N x 3 数组,
pressure
是一个大小为 N 的一维数组,
area
是一个大小为 N 的一维数组。正如我们所见,循环本质上是对二维 numpy 数组行的操作(
area_vector
normal
)。

是否可以仅在 1 行中执行上述计算(即避免

for
循环并尽可能使用 numpy 的内置方法)?

非常感谢,

python python-3.x numpy numpy-ndarray
1个回答
1
投票

import numpy as np
N = np.random.randint(10, 100)
normal = np.random.random((N, 3))
pressure = np.random.random((N, 1))
area = np.random.random((N, 1))
area_vector = np.zeros(np.shape(normal))
for i in range(len(pressure)):
    area_vector[i] = area[i] * normal[i]

area_vector_alternative = area * normal
print((area_vector_alternative == area_vector).all())

版画

True
© www.soinside.com 2019 - 2024. All rights reserved.