Numpy设定了绝对值

时间:2018-01-25 20:14:02

标签: python arrays numpy

您有一个数组A,并且您希望将其中的每个值作为绝对值。问题是

A *= numpy.sign(A)

创建一个新矩阵,A中的值保持不变。我找到两种方法来将绝对值设置回A

A[:] = numpy.abs(A)

import pandas as pd

df = pd.read_csv('myfile.csv', columns=['user', 'meetings'])
df_grouped = df.groupby('user')['meetings'].apply(list).astype(str).reset_index()

基于时间测试,他们的表现几乎相同 enter image description here

问题:

  

是否有更有效的方法来执行此任务?

1 个答案:

答案 0 :(得分:7)

有一个out参数,可以就地更新数组:

numpy.abs(A, out=A)

并且恰好是 lot 更快,因为您不必为新阵列分配内存。

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