这对社区来说似乎是一个愚蠢的问题,但我没有设法在网上找到答案。想象一下有这样的情况:
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 的内置方法)?
非常感谢,
是
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