首页 > 解决方案 > numpy数组的numpy缩放特定值

问题描述

我想通过乘数(例如 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]) 

标签: pythonarraysnumpy

解决方案


将乘以 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])

推荐阅读