我编写了一个函数来乘以两个numpy数组。
def ra(self):
"""Multiply Rotation with initial Values"""
rva = self.r_array() * self.va_array()
rva = np.sum(rva, axis=1) # Sum rows of Matrix
rva = np.array([[rva[0]], # Transpose Matrix
[rva[1]],
[rva[2]]])其中:
我觉得这应该可以写成一行。然而,self.r_array() * self.va_array()总是返回一个3x3数组。
如有任何建议,将不胜感激。
干杯
发布于 2020-07-11 06:37:16
实际上,*运算符是按元素进行乘法的.因此,您需要使用.dot()函数来获得所需的结果。
例子:
import numpy as np
a = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
b = np.array([[1]
,[2],
[3]])
print(a * b)
print(a.dot(b))产出:
[[ 1 2 3]
[ 8 10 12]
[21 24 27]]
[[14]
[32]
[50]]请注意,当我使用*运算符时,a中的每一列都与b元素成正比。
发布于 2020-07-21 03:58:06
一条衬里:
np.sum(r_array*va_array, axis=1, keepdims=True)要匹配r_array@va_array,请在1行中使用va_array.T。
https://codereview.stackexchange.com/questions/245303
复制相似问题