我想通过乘数(例如2)缩放numpy数组编号的特定值(例如,大于5)。我知道我可以通过循环来实现,但是我想避免循环。我想我可以用一个numpy蒙版实现此目的,但是我不确定如何实现它。为了演示我要实现的目标,我使用了虚函数scale_array。
这是一个最小的工作示例
import numpy as np
numbers = np.array([-3, 5, 2, -1, -15, 10])
mask = np.abs(numbers) > 5
numbers_scaled = scale_array(array=numbers, mask=mask, scale_factor=2)
print(numbers_scaled) # np.array([-3, 5, 2, -1, -30, 20])
答案 0 :(得分:1)
直接将原始矩阵乘以2的掩码值分配为:
numbers = np.array([-3, 5, 2, -1, -15, 10])
mask = np.abs(numbers) > 5
numbers[mask] = numbers[mask]*2
numbers
array([ -3, 5, 2, -1, -30, 20])
答案 1 :(得分:1)
在撰写本文时,mask = np.abs(numbers) > 5
为您提供了要缩放的位置。
只需执行numbers[mask] *= 2
即可:)