numpy数组的Numpy scale特定值

时间:2018-09-18 09:29:28

标签: python arrays 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]) 

2 个答案:

答案 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即可:)