Я работаю с набором данных, который хранит массив единичных векторов в виде массивов компонентов векторов.
Как мне использовать векторизованный код / широковещательную передачу для написания чистого и компактного кода, чтобы дать крест произведение векторов поэлементно?
Например, вот метод грубой силы для перебора длины массивов, выбора координат, повторного составления двух векторов, а затем вычисления перекрестного произведения.
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])
]
Я пытался понять этот вопрос и дать ответ, чтобы обобщить его, но не смог:
- Элементное перекрестное произведение векторов, содержащихся в 2 массивах с Python