我一直在尝试确定这个简单脚本的错误源数字阵列作为输入,并从数据集生成新的晶格
def reciprocalLat(lattice):
for i,a in enumerate(lattice):
print a
b[i]=numpy.cross(a[(i+1)%3],a[(i+2)%3],axis=0)
#/numpy.dot(a[i],numpy.cross(a[(i+1)%3],a[(i+1)%3]),0)
当我尝试改变我的格子,甚至使用简单的例子和多种不同的方式
像
^{pr2}$或者
print numpy.cross(lat[(1)%3],lat[(2)%3])
我刚得到这个错误
ValueError: rollaxis: axis (0) must be >=0 and < 0
rollaxis在这个问题中做了什么,它在这个问题的能力范围内做了什么,当我分配一个值时,我到底设置了什么。我如何修正这个错误(一个小于1且大于或等于1的东西怎么可能?)在
我的测试矩阵是:
[['4.7480001450' '-2.3740000725' '0.0000000000']
['0.0000000000' '4.1118887427' '0.0000000000']
['0.0000000000' '0.0000000000' '15.4790000916']]
对于更新版本的
np.cross
(它使用rollaxis而不是swap),我可以通过以下方式生成此错误:也就是说,当将标量(或0d)数组传递给
cross
时,会出现这个rollaxis
错误。因此,请确保将向量传递给cross
(即至少1d数组)。在例如,
^{pr2}$latice
是2d那么
a
是1d,a[1]
是标量。在这是你的目标吗?在
我对你使用
%3
感到困惑,但从你的评论来看,你试图做b[0,:] = cross(lat[1,:], lat[2,:])
等等但是
cross
本身就是在做这种置换配对。来自旧的cross
:相关问题 更多 >
编程相关推荐