标签: clamp

我在哪里可以找到.NET中的"钳位"功能?

我想将一个值钳位x到一个范围[a, b]:

x = (x < a) ? a : ((x > b) ? b : x);
Run Code Online (Sandbox Code Playgroud)

这是非常基本的.但是我没有在类库中看到函数"clamp" - 至少在类库中没有System.Math.

(因为不知道"钳制"一个值是为了确保它位于某些最大值和最小值之间.如果它大于最大值,则它被最大值替换,等等.)

c# clamp

84
推荐指数
6
解决办法
6万
查看次数

如何将整数钳位到某个范围?

我有以下代码:

new_index = index + offset
if new_index < 0:
    new_index = 0
if new_index >= len(mylist):
    new_index = len(mylist) - 1
return mylist[new_index]
Run Code Online (Sandbox Code Playgroud)

基本上,我计算一个新索引并使用它来从列表中查找一些元素.为了确保索引在列表的边界内,我需要将这两个if语句写成4行.那是相当冗长,有点难看......我敢说,这是非常不科幻的.

还有其他更简单,更紧凑的解决方案吗?(和更多pythonic)

是的,我知道我可以if else在一行中使用,但它不可读:

new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index
Run Code Online (Sandbox Code Playgroud)

我也知道我可以链max()min()在一起.它更紧凑,但我觉得它有点模糊,如果我输错了就更难找到错误.换句话说,我觉得这很简单.

new_index = max(0, min(new_index, len(mylist)-1))
Run Code Online (Sandbox Code Playgroud)

python clamp

81
推荐指数
8
解决办法
8万
查看次数

Uint8Array和Uint8ClampedArray之间的区别

Uint8ArrayUint8ClampedArrayJavaScript有什么区别?据我所知,Uint8ClampedArray它与画布一起用于像素操作.为什么这样做有什么好处?

javascript arrays memory-management clamp

60
推荐指数
1
解决办法
8930
查看次数

java有钳位功能吗?

假设我有一个value,我通常会这样做"钳制"它到一个范围,这里是范围[0..1].也就是说,如果它低于范围开始,则将其增加到范围开始,将其增加到范围结束,将其减小到范围结束.

clampedValue = Math.max(0, Math.min(1, value));
Run Code Online (Sandbox Code Playgroud)

是否有内置功能可以夹紧到一个范围内?

java clamp

52
推荐指数
6
解决办法
4万
查看次数

钳制实际(固定/浮点)值的最快方法?

是否有一种比使用if语句或三元运算符更有效的方法来钳制实数?我想为双打和32位修复点实现(16.16)做到这一点.我不是要求代码可以处理这两种情况; 它们将在不同的功能中处理.

显然,我可以这样做:

double clampedA;
double a = calculate();
clampedA = a > MY_MAX ? MY_MAX : a;
clampedA = a < MY_MIN ? MY_MIN : a;
Run Code Online (Sandbox Code Playgroud)

要么

double a = calculate();
double clampedA = a;
if(clampedA > MY_MAX)
    clampedA = MY_MAX;
else if(clampedA < MY_MIN)
    clampedA = MY_MIN;
Run Code Online (Sandbox Code Playgroud)

fixpoint版本将使用函数/宏进行比较.

这是在代码的性能关键部分完成的,所以我正在寻找一种尽可能有效的方法(我怀疑它会涉及位操作)

编辑:它必须是标准/便携式C,平台特定的功能在这里没有任何兴趣.此外,MY_MINMY_MAX我想要钳制的值相同(在上面的例子中加倍).

c numbers bit-manipulation clamp

37
推荐指数
7
解决办法
4万
查看次数

有没有一种限制/钳制数字的方法?

我写了以下代码,它保持x在范围内(a..b).在伪代码中:

(if x < a, x = a; if x > b, x = b)
Run Code Online (Sandbox Code Playgroud)

在Ruby中它将是这样的:

x = [a, [x, b].min].max
Run Code Online (Sandbox Code Playgroud)

由于它是非常基本和有用的功能,我想知道是否有一个本机方法在ruby中这样做.

从Ruby 2.3.3开始,显然没有这样的方法,最短/更易读的方法是什么?

我发现:

x = [a, x, b].sort[1]
Run Code Online (Sandbox Code Playgroud)

到目前为止,但我不确定它是否更具可读性.

ruby clamp

26
推荐指数
3
解决办法
7231
查看次数

在Python中夹紧浮动数字?

在Python 2.6中是否有内置函数?

就像是:

clamp(myValue, min, max)
Run Code Online (Sandbox Code Playgroud)

python math clamp

24
推荐指数
3
解决办法
2万
查看次数

Pythonic方法用上限和下限(钳位,限幅,阈值)替换列表值?

我想从列表中替换outliners.因此我定义了上限和下限.现在,上面upper_bound和下面的每个值lower_bound都被绑定值替换.我的方法是使用numpy数组分两步完成.

现在我想知道是否可以一步完成,因为我猜它可以提高性能和可读性.

有没有更短的方法来做到这一点?

import numpy as np

lowerBound, upperBound = 3, 7

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr[arr > upperBound] = upperBound
arr[arr < lowerBound] = lowerBound

# [3 3 3 3 4 5 6 7 7 7]
print(arr)
Run Code Online (Sandbox Code Playgroud)

python arrays numpy clip clamp

21
推荐指数
2
解决办法
3195
查看次数

剪辑R中最小和最大允许值之间的值

在Mathematica中有一个命令Clip[x, {min, max}] ,它给出了xfor min<=x<=max,minfor x<minmaxfor x>max,以及

http://reference.wolfram.com/mathematica/ref/Clip.html (镜像)

在R中实现这一目标的最快方法是什么?理想情况下,它应该是一个可列表的函数,理想情况下应该可以处理单个值,向量,矩阵或数据帧......

汤姆,欢呼声

r vectorization clip clamp

17
推荐指数
3
解决办法
5510
查看次数

PHP中是否存在"钳位"数字函数?

我写了一个函数来"钳制"PHP中的数字,但我想知道这个函数是否存在于本地语言中.

我在数学部分阅读了PHP.net文档,但我找不到它.

基本上我的函数所做的是它接受一个变量,一个可能值的数组和一个默认值,这是我函数的签名:

function clamp_number($value, $possible_values, $default_value)

如果$value不匹配$possible_values则默认为$default_value

我认为如果PHP本身提供它,我的功能会更快,因为我在我的程序中经常使用它.

无论如何,如果这个问题不属于SO,请随时投票关闭它.

php clamp

8
推荐指数
2
解决办法
7010
查看次数

标签 统计

clamp ×10

python ×3

arrays ×2

clip ×2

bit-manipulation ×1

c ×1

c# ×1

java ×1

javascript ×1

math ×1

memory-management ×1

numbers ×1

numpy ×1

php ×1

r ×1

ruby ×1

vectorization ×1