gpt4 book ai didi

python - 如何使用 numpy 对矩阵中的多行进行向量化运算

转载 作者:太空宇宙 更新时间:2023-11-03 20:10:13 24 4
gpt4 key购买 nike

我正在使用 Trimesh,并尝试计算网格的一些统计数据。一种可能的统计数据(也是我用来说明问题的统计数据)是网格 3 个随机顶点的面积的直方图。目前我正在执行以下操作,但我想知道是否有任何方法可以避免使用循环。

def CalcArea(self, p):
return 0.5 * np.linalg.norm(np.cross(p[1]-p[0], p[2]-p[0]))

v_c = self.mesh.vertices.copy()
np.random.shuffle(v_c)
areas = [self.CalcArea(v_c[i:i+3]) for i in range(len(v_c[:-2]))]

最佳答案

numpy documentation是你的 friend :-)。

np.crossnp.linalg.norm 也适用于向量数组。并且它们支持强大的关键字参数axis

我假设您的 v_c 的形状为 (N, 3),其中 N 是顶点数。为了简单起见,我们假设它是三的倍数,那么:

N = 30
v_c = np.random.random((N, 3))
v1 = v_c[N//3:2*N//3, :] - v_c[:N//3, :]
v2 = v_c[2*N//3:, :] - v_c[:N//3, :]
area = 0.5*np.linalg.norm(np.cross(v1, v2), axis=1)

请注意,这涉及到临时数组的创建,因此可能要留意非常大的 N

关于python - 如何使用 numpy 对矩阵中的多行进行向量化运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58752843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com