我想“翻转”矩阵中的值,类似于 numpy.absolute()
,但是翻转矩阵中的平均值;有点像折叠。
下面的代码可以工作,但我理想地喜欢更Pythonic/更快的东西。就我的目的而言,我的数组是 360x360,这种“翻转”需要进行很多次,因此对数组中的每个元素运行“for”循环似乎是一个坏主意。
import numpy as np
arr = np.array([0,1,2,3,4])
avg = np.average(arr)
for i in range(len(arr)):
x = arr[i]
if x < avg:
arr[i] = x + avg
print(arr)
>>> [2,3,2,3,4]
谢谢!
最佳答案
这是 numpy 的方式:
arr[arr < avg] += avg
表达式arr < avg
创建一个用于选择 arr
中的元素的掩码小于avg
.
arr[...]
选择arr
中的那些元素.
+= avg
增加它们。
关于python - 有没有一种好方法可以将某个非零值周围的数字列表/矩阵 'flip' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57151420/