Python 如何有效地操作子数组,如计算行列式、求逆、,
我必须对子数组进行多次运算,如矩阵求逆或构造行列式。由于for循环在Python中不是很快,我想知道什么是实现这一点的最佳方法Python 如何有效地操作子数组,如计算行列式、求逆、,,python,function,numpy,sub-array,Python,Function,Numpy,Sub Array,我必须对子数组进行多次运算,如矩阵求逆或构造行列式。由于for循环在Python中不是很快,我想知道什么是实现这一点的最佳方法 将numpy导入为np n=8 a=np.rand.rand(3,3,n) b=np.空(n) c=np.类零(a) 对于范围(n)中的i: b[i]=np.linalg.det(a[:,:,i]) c[:,:,i]=np.linalg.inv(a[:,:,i]) 这些功能将接受n-dim阵列,只要最后两个轴是构成要操作功能的2D切片的轴。因此,为了解决我们的问题,排列
将numpy导入为np
n=8
a=np.rand.rand(3,3,n)
b=np.空(n)
c=np.类零(a)
对于范围(n)中的i:
b[i]=np.linalg.det(a[:,:,i])
c[:,:,i]=np.linalg.inv(a[:,:,i])
这些功能将接受n-dim
阵列,只要最后两个轴是构成要操作功能的2D
切片的轴。因此,为了解决我们的问题,排列轴以将迭代轴作为第一个轴,执行所需的操作,如果需要,将该轴推回原始位置
因此,我们可以得到这些输出,就像这样-
b = np.linalg.det(np.moveaxis(a,2,0))
c = np.moveaxis(np.linalg.inv(np.moveaxis(a,2,0)),0,2)
非常感谢你!您的解决方案比我的快100倍左右=)