二维numpy数组上的无循环操作

gcuhipw9  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(99)

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

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

normal是一个N x 3数组,area是一个大小为N的1D数组。正如我们所看到的,循环本质上是对二维numpy数组(area_vectornormal)的行的操作。
是否有可能仅在1行(i.e.避免for循环并尽可能多地使用numpy的内置方法)?
多谢了

jm81lzqq

jm81lzqq1#

是的

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

相关问题