python - 类方法中的 Numpy 数组创建问题
问题描述
以下类方法一直给我带来麻烦:
def align(self,array,a):
aligned=np.zeros(array.shape)
b=[0,0,1]
v=np.cross(a,b)
c=np.dot(a,b)
I=np.eye(3,3)
vx=np.zeros((3,3))
vx=[[0,-v[2],v[1]],[v[2],0,-v[0]],[-v[1],v[0],0]]
rotmatrix=I + vx + (vx @ vx)/(1+c)
aligned = rotmatrix @ array.T
return aligned
我得到的错误信息是:
TypeError: unsupported operand type(s) for +: 'float' and 'list'
在调查了旋转矩阵的每个分量之后,我确信正在破坏的操作是我的矩阵乘法 (vx @ vx)。
为了生成 vx 矩阵,我在 numpy 中尝试了各种不同的东西,例如 np.asarray、np.vstack、np.array,有和没有初始化一个零数组。打印出 vx 时,根据我的尝试,它可以是一个列表数组,也可以是一个常规的 python 列表列表。它从来没有正确的 numpy 数组格式。我发现让数组正确的唯一方法是将数组的每个索引分配给正确的值,这是可行的,但我很难相信这是唯一的方法。
解决方案
经典的方式怎么样vx = np.array([[0,-v[2],v[1]],[v[2],0,-v[0]],[-v[1],v[0],0]])
?
推荐阅读
- llvm - 生成llvm-ir时如何链接自写的运行时?
- amazon-web-services - AWS EKS 与服务器 ASFASF.da2.ap-northeast-1.eks.amazonaws.com 的连接被拒绝 - 您是否指定了正确的主机或端口?
- android - 我可以检查任何应用的布局以找出它们在 Android 设备上使用的组件吗?
- javascript - 在反应关键道具被剥离
- kendo-grid - 如何获取 MVC 的剑道网格 dropdownchange 事件
- sql - 如何在选择中隐藏某些内容?
- scala - 使用 DynamoDBMapper 加密 EMR 中的数据时出现 IllegalAccessError
- go - Go 不允许建立绝对路径
- c++ - Visual Studio 2019:调试器显示不完整的向量变量信息
- c# - C# - 锁定和 StreamWrite 问题(多线程)