Ton*_*ony 6 python arrays numpy
您有一个数组A,并且您希望将其中的每个值作为绝对值.问题是
numpy.abs(A)
Run Code Online (Sandbox Code Playgroud)
创建一个新矩阵,A中的值保持原样.我找到两种方法来将绝对值设置回A
A *= numpy.sign(A)
Run Code Online (Sandbox Code Playgroud)
要么
A[:] = numpy.abs(A)
Run Code Online (Sandbox Code Playgroud)
题:
有更有效的方法来执行此任务吗?
有一个out参数,可以就地更新数组:
numpy.abs(A, out=A)
Run Code Online (Sandbox Code Playgroud)
并且也恰好是一个很大更快,因为你不必为新阵列分配内存.
A = np.random.randn(1000, 1000)
%timeit np.abs(A)
100 loops, best of 3: 2.9 ms per loop
%timeit np.abs(A, out=A)
1000 loops, best of 3: 647 µs per loop
Run Code Online (Sandbox Code Playgroud)