二维坐标数组的逐元素叉积
Element-wise Cross Product of 2D arrays of Coordinates
我正在处理一个数据集,该数据集将单位向量数组存储为向量分量的数组。
我将如何使用向量化代码/广播来编写干净紧凑的代码以按元素给出向量的叉积?
例如,这里有一个蛮力方法,用于遍历数组的长度,挑选出坐标,重新组合两个向量,然后计算叉积。
x = [0,0,1,1]
y = [0,1,0,1]
z = [1,0,0,1]
v1 = np.array([x,y,z])
x = [1,1,0,1]
y = [1,0,1,1]
z = [0,1,1,1]
v2 = np.array([x,y,z])
result = []
for i in range(0, len(x)):
a = [v1[0][i], v1[1][i], v1[2][i]]
b = [v2[0][i], v2[1][i], v2[2][i]]
result.append(np.cross(a,b))
result
>>>
[
array([-1, 1, 0]),
array([ 1, 0, -1]),
array([ 0, -1, 1]),
array([ 0, 0, 0])
]
我试图理解这个问题并回答以概括它,但失败了:
-
np.cross
也可以使用二维数组,你只需要指定正确的轴:
np.cross(v1,v2, axisa=0, axisb=0)
array([[-1, 1, 0],
[ 1, 0, -1],
[ 0, -1, 1],
[ 0, 0, 0]])
我正在处理一个数据集,该数据集将单位向量数组存储为向量分量的数组。
我将如何使用向量化代码/广播来编写干净紧凑的代码以按元素给出向量的叉积?
例如,这里有一个蛮力方法,用于遍历数组的长度,挑选出坐标,重新组合两个向量,然后计算叉积。
x = [0,0,1,1]
y = [0,1,0,1]
z = [1,0,0,1]
v1 = np.array([x,y,z])
x = [1,1,0,1]
y = [1,0,1,1]
z = [0,1,1,1]
v2 = np.array([x,y,z])
result = []
for i in range(0, len(x)):
a = [v1[0][i], v1[1][i], v1[2][i]]
b = [v2[0][i], v2[1][i], v2[2][i]]
result.append(np.cross(a,b))
result
>>>
[
array([-1, 1, 0]),
array([ 1, 0, -1]),
array([ 0, -1, 1]),
array([ 0, 0, 0])
]
我试图理解这个问题并回答以概括它,但失败了:
-
np.cross
也可以使用二维数组,你只需要指定正确的轴:
np.cross(v1,v2, axisa=0, axisb=0)
array([[-1, 1, 0],
[ 1, 0, -1],
[ 0, -1, 1],
[ 0, 0, 0]])