gpt4 book ai didi

python - 如何从 numpy 的列表中裁剪到最接近的值?

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:18 25 4
gpt4 key购买 nike

例如,我有一个值数组

[-11, -2, -0.7, -0.2, 0, 0.1, 0.5, 0.9, 2, 7]

我想将它裁剪为 0 或 1,以较接近者为准。替代 -1 或 1(除非实现有任何不同)。

我试过了

>>> np.asarray(arr).clip(min=-1, max=1)
array([ 0.1, -1. , 1. , 0.5])
>>> np.asarray(arr).clip(-1, 1)
array([ 0.1, -1. , 1. , 0.5])
>>> np.asarray(arr).clip(-1, 1)
>>> np.asarray(arr).clip(0, 1)
array([0.1, 0. , 1. , 0.5])

所以它不起作用,因为我预计:[-1, -1, -1, -1, 1, 1, 1, 1, 1, 1] clip(-1, 1)

[0, 0, 0, 0, 0, 0, 1, 1, 1, 1]clip(0, 1)

的情况下

如何以正确的方式做到这一点?

最佳答案

使用 NumPy 的 where 的一般解决方案

对于 -1 到 1

arr = np.array([-11, -2, -0.7, -0.2, 0, 0.1, 0.5, 0.9, 2, 7])

clip_left = -1
clip_right = 1

mean = (clip_left + clip_right)/2

arr = np.where(arr<mean, clip_left, clip_right)
print (arr)
# [-1 -1 -1 -1 1 1 1 1 1 1]

对于 0 到 1

arr = np.array([-11, -2, -0.7, -0.2, 0, 0.1, 0.5, 0.9, 2, 7])

clip_left = 0
clip_right = 1

mean = (clip_left + clip_right)/2

arr = np.where(arr<mean, clip_left, clip_right)
print (arr)
# [0 0 0 0 0 0 1 1 1 1]

作为函数

arr = np.array([-11, -2, -0.7, -0.2, 0, 0.1, 0.5, 0.9, 2, 7])

def clip(arr, clip_left, clip_right):
mean = (clip_left + clip_right)/2
arr = np.where(arr<mean, clip_left, clip_right)
return arr

print (clip(arr, -1, 1))
# [-1 -1 -1 -1 1 1 1 1 1 1]

关于python - 如何从 numpy 的列表中裁剪到最接近的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54394079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com