gpt4 book ai didi

为什么某些元素以数组和标量形式出现的 Python 原因

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:17 25 4
gpt4 key购买 nike

我正在运行一个代码,它基本上围绕 3 个维度旋转一个大数据数组(5000 万行)。但是,我遇到了一个奇怪的问题,我已将其缩小到如何评估旋转矩阵。基本上,对于除绕 x 轴以外的任何旋转,python 代码永远挂起(甚至不能用热键退出),即,当我尝试使用 y/z 旋转与 np.dot 进行大型矩阵乘法时,数据.T.

奇怪的是,当我使用 x 旋转时它绝对没问题,而且计算也很好。分别评估矩阵的形式,看起来在某些未知条件下,y 和 z 旋转矩阵返回数组而不是标量,我怀疑这会干扰 numpy 的 np.dot 方法。

虽然我可以只 float 旋转矩阵中的所有元素并且它运行,但我想确定这个问题的根源。我附上了一个示例代码,该代码改编 self 的原始代码,可重现此效果。第一组打印产生带有标量元素的旋转矩阵。第二组打印语句生成矩阵,其中 x_rotation 具有标量元素,但 y,z 旋转具有用于非零元素的 1x1 数组

import numpy as np

def x_rot(a):
return np.array([[1,0,0],[0,np.cos(a),-np.sin(a)],[0,np.sin(a),np.cos(a)]])

def y_rot(a):
return np.array([[np.cos(a),0,-np.sin(a)],[0,1,0],[np.sin(a),0,np.cos(a)]])

def z_rot(a):
return np.array([[np.cos(a),-np.sin(a),0],[np.sin(a),np.cos(a),0],[0,0,1]])

ang1 = np.random.choice([-1.,1.],1)*((np.pi/4.*np.random.random()) + np.pi/6.)

print x_rot(0.1)
print y_rot(0.1)
print z_rot(0.1)

print y_rot(ang1)
print x_rot(ang1)
print z_rot(ang1)

提前致谢

最佳答案

如果您想使用 numpy.random.choice 选择标量,请不要指定 size 参数。将 size 指定为 1 会导致它生成长度为 1 的一维数组。

关于为什么某些元素以数组和标量形式出现的 Python 原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44319820/

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