如何将numpy数组中的值降为特定的数字

x4shl7ld  于 2022-12-04  发布在  其他
关注(0)|答案(4)|浏览(120)

假设我有一个这样的数组:

[1,5, 2, 6, 6.7, 8, 10]

我想把大于n的数降下来。例如,如果n是6,数组将如下所示:

[1,5, 2, 6, 6, 6, 6]

我已经尝试过使用numpy的解决方案。vectorize:

lower_down = lambda x : min(6,x)
lower_down = numpy.vectorize(lower_down)

它可以工作,但是太慢了。我怎样才能使它更快呢?有没有一个 numpy 函数可以达到同样的效果?

dly7yett

dly7yett1#

Numpy已经有了一个minimum函数,不需要创建自己的。

>>> np.minimum(6, [1,5, 2, 6, 6.7, 8, 10])
array([1., 5., 2., 6., 6., 6., 6.])
xvw2m8pv

xvw2m8pv2#

如果要限制它,可以使用numpy.minimum(或numpy.maximum):
第一个
如果需要限制最小值和最大值,请尝试numpy.clip函数:

>>> np.clip([1, 2, 3, 4], 2, 3)
array([2, 2, 3, 3])

来自文档:

  • 剪切(限制)数组中的值。给定一个间隔,间隔外的值将被剪切到间隔边缘。例如,如果指定间隔[0,1],则小于0的值将变为0,大于1的值将变为1。等效于np.minimum(a_max,np.maximum(a,a_min)),但速度更快。*
eh57zj3b

eh57zj3b3#

您可以这样做:

import numpy as np

array = [1,5, 2, 6, 6.7, 8, 10]
array = np.array(array)

array[array >= 6] = 6

new_array = array

print(new_array)

[1.第五条第二款第六项第六款第六项]

dtcbnfnu

dtcbnfnu4#

请尝试以下操作:

import numpy as np

data = np.array([1,5, 2, 6, 6,7, 8, 10])

data[data >6 ] = 6

相关问题