Python 有没有好办法';翻转';围绕某个非零值的数字列表/矩阵?

Python 有没有好办法';翻转';围绕某个非零值的数字列表/矩阵?,python,arrays,numpy,Python,Arrays,Numpy,我想“翻转”矩阵中的值,类似于numpy.absolute(),但翻转矩阵中的平均值;有点像褶皱 下面的代码可以工作,但我理想的情况下想要更具pythonic/更快的代码。就我的目的而言,我的数组是360x360,这种“翻转”需要做很多很多次,所以在数组中的每个元素上运行“For”循环似乎不是个好主意 将numpy导入为np arr=np.数组([0,1,2,3,4]) 平均值=np.平均值(arr) 对于范围内的i(len(arr)): x=arr[i] 如果x>> [2,3,2,3,4]

我想“翻转”矩阵中的值,类似于
numpy.absolute()
,但翻转矩阵中的平均值;有点像褶皱

下面的代码可以工作,但我理想的情况下想要更具pythonic/更快的代码。就我的目的而言,我的数组是360x360,这种“翻转”需要做很多很多次,所以在数组中的每个元素上运行“For”循环似乎不是个好主意

将numpy导入为np
arr=np.数组([0,1,2,3,4])
平均值=np.平均值(arr)
对于范围内的i(len(arr)):
x=arr[i]
如果x<平均值:
arr[i]=x+avg
打印(arr)
>>> [2,3,2,3,4]
谢谢

这是最简单的方式:

arr[arr < avg] += avg
arr[arr
表达式
arr
创建一个掩码,用于选择
arr
中小于
avg
的元素

arr[…]
arr
中选择这些元素

+=avg
增加它们。

avg=np.平均值(数据);数据