[英]NumPy Matrix operation without copying
例如,如何制作矩阵转置,而不制作矩阵对象的副本? 同样,作为其他矩阵运算(从矩阵中减去矩阵,......)。 这样做有益吗?
采用数组的转置不会复制:
>>> a = np.arange(9).reshape(3,3)
>>> b = np.transpose(a)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> b
array([[0, 3, 6],
[1, 4, 7],
[2, 5, 8]])
>>> b[0,1] = 100
>>> b
array([[ 0, 100, 6],
[ 1, 4, 7],
[ 2, 5, 8]])
>>> a
array([[ 0, 1, 2],
[100, 4, 5],
[ 6, 7, 8]])
这同样适用于numpy.matrix对象。
当您希望通过复制非常大的数组来避免不必要地消耗大量内存时,这可能是有益的。 但是在修改转置时,还必须小心避免无意中修改原始数组(如果仍然需要它)。
许多numpy函数接受一个可选的“out”关键字(例如,numpy.dot)来将输出写入现有数组。 例如,采取的矩阵乘积a
与其本身和写入输出现有阵列c
:
numpy.dot(a, a, out=c)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.