我正在研究如何加快我的职能之一。使用相同大小的多个二维数组调用该函数。我想在最后两个维度将它们组合成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数组传递给函数。