您有一个数组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()
问题:
是否有更有效的方法来执行此任务?
答案 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