我正在研究如何加快我的职能之一。使用相同大小的多个二维数组调用该函数。我想在最后两个维度将它们组合成3x3的4D,然后再获得整个数组的特征值。
我已经设法使用两个嵌套的for
循环来做到这一点,但是它比我期望的要慢一些,所以有什么好的方法可以加快代码的速度?
def principal(xx,xy,xz,yy,yz,zz):
import numpy as np
xx = np.array(xx)
xy = np.array(xy)
xz = np.array(xz)
yy = np.array(yy)
yz = np.array(yz)
zz = np.array(zz)
size = np.shape(xx)
Princ = np.empty((size[1],size[0],3,3))
for j in range(size[1]):
for i in range(size[0]):
Princ[j,i,:,:] = np.array([[xx[i,j],xy[i,xz[i,j]],[xy[i,yy[i,yz[i,[xz[i,zz[i,j]]])
Princ = np.linalg.eigvalsh(Princ)
return Princ
import numpy as np
number_arrays_1 = 3
number_arrays_2 = 4
xx = np.ones((number_arrays_1,number_arrays_2))*80
xy = np.ones((number_arrays_1,number_arrays_2))*30
xz = np.ones((number_arrays_1,number_arrays_2))*0
yy = np.ones((number_arrays_1,number_arrays_2))*40
yz = np.ones((number_arrays_1,number_arrays_2))*0
zz = np.ones((number_arrays_1,number_arrays_2))*60
Princ = principal(xx,zz)
print(Princ)
我用xx = np.array(xx)
进行转换的原因是,在较大的程序中,我将pandas数据框而不是numpy数组传递给函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。