gpt4 book ai didi

python - numpy 数组上的高效行操作

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:39 26 4
gpt4 key购买 nike

我想在 numpy 数组的行上运行一个操作(例如减去中位数)。

一种方法是使用理解列表:

import numpy as np
from statistics import median
x = np.array([[1, 2, 3, 4], [5, 6, 7 ,8], [9, 10, 11, 12]])

xm = np.vstack(([x[i,:] - median(x[i,:]) for i in range(x.shape[0])]))

处理每一行,然后垂直堆叠为 numpy 数组。

是否有更高效/优雅的方式来做到这一点?

最佳答案

x - np.median(x, axis=1)[:, np.newaxis]

给定 np.median 有一个 keepdims 参数,您还可以避免手动切片以使其广播友好

x - np.median(x, axis=1, keepdims=True)

如果你想逐行应用任意函数,比如 statistics 中的 median,你可以使用 np.apply_along_axis,请注意它基本上是一个 for 循环,因此您不会真正获得任何矢量化加速:

x - np.apply_along_axis(median, axis=1, x)[:,np.newaxis]

关于python - numpy 数组上的高效行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50271526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com