Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有效地操作子数组,如计算行列式、求逆、,_Python_Function_Numpy_Sub Array - Fatal编程技术网

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切片的轴。因此,为了解决我们的问题,排列

我必须对子数组进行多次运算,如矩阵求逆或构造行列式。由于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
切片的轴。因此,为了解决我们的问题,排列轴以将迭代轴作为第一个轴,执行所需的操作,如果需要,将该轴推回原始位置

因此,我们可以得到这些输出,就像这样-

b = np.linalg.det(np.moveaxis(a,2,0))
c = np.moveaxis(np.linalg.inv(np.moveaxis(a,2,0)),0,2)

非常感谢你!您的解决方案比我的快100倍左右=)