我需要OCaml中浮点数的绝对值函数,核心语言似乎没有,所以我写了以下内容:
let absF (f:float) = if f > 0.0 then f else (f *. -1.0);;
Run Code Online (Sandbox Code Playgroud)
这似乎是积极的,但不是负面的,引用:
此表达式的类型为float - > float,但此处与int类型一起使用
我的逻辑错误是什么?
如何计算Eigen中矢量的绝对值?既然明显的方式
Eigen::VectorXf v(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);
v.abs(); // Compute abs value.
Run Code Online (Sandbox Code Playgroud)
不起作用.
我需要优化一个大量使用计算L1矢量规范的脚本.我们知道在这种情况下L1范数只是绝对值的总和.当计算numpy在这个任务中的速度有多快时,我发现了一些奇怪的东西:添加所有向量元素比获取向量的每个元素的绝对值快大约3倍.这是一个令人惊讶的结果,因为与采用绝对值相比,加法非常复杂,绝对值只需要对数据块的每第32位置零(假设为float32).
为什么这个加法比简单的按位运算快3倍?
import numpy as np
a = np.random.rand(10000000)
%timeit np.sum(a)
13.9 ms ± 87.1 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit np.abs(a)
41.2 ms ± 92.3 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
Run Code Online (Sandbox Code Playgroud) ( RMSE和MAE都是测量两个向量之间距离的方法:预测向量和目标值向量。各种距离测量或范数都是可能的。一般来说,计算向量的大小或长度是通常直接需要或作为更广泛的向量或向量矩阵运算的一部分。
尽管RMSE通常是回归任务的首选性能度量,但在某些情况下您可能更喜欢使用其他函数。例如,如果数据集中有许多异常值实例,在这种情况下,我们可以考虑使用平均绝对误差(MAE)。
更正式地说,规范指数越高,它就越关注大值而忽视小值。这就是 RMSE 比 MAE 对异常值更敏感的原因。) 来源:使用 scikit learn 和 tensorflow 进行机器学习实践。
因此,理想情况下,在任何数据集中,如果我们有大量异常值,则损失函数或向量范数“代表预测与真实标签之间的绝对差异;类似于y_diff下面的代码”应该会增长,如果我们增加标准...换句话说,RMSE 应该大于 MAE。--> 如果有错请纠正<--
根据这个定义,我生成了一个随机数据集,并向其中添加了许多异常值,如下面的代码所示。我计算了残差或许多 k 值(范围从 1 到 5)的lk_normy_diff。但是,我发现 lk_norm 随着 k 值的增加而减小;然而,我期望 RMSE(又名范数 = 2)大于 MAE(又名范数 = 1)。
我很想了解当我们增加 K(又名阶数)时,LK 范数是如何减少的,这与上面的定义相反。
预先感谢您的任何帮助!
代码:
import numpy as np
import plotly.offline as pyo
import plotly.graph_objs as go
from plotly import tools
num_points = 1000
num_outliers = 50
x = np.linspace(0, 10, …Run Code Online (Sandbox Code Playgroud) 我试图了解以下代码段的工作原理.该程序使用SIMD向量指令(Intel SSE)来计算4个浮点数的绝对值(因此,基本上,矢量化的"fabs()"函数).
这是片段:
#include <iostream>
#include "xmmintrin.h"
template <typename T>
struct alignas(16) sse_t
{
T data[16/sizeof(T)];
};
int main()
{
sse_t<float> x;
x.data[0] = -4.;
x.data[1] = -20.;
x.data[2] = 15.;
x.data[3] = -143.;
__m128 a = _mm_set_ps1(-0.0); // ???
__m128 xv = _mm_load_ps(x.data);
xv = _mm_andnot_ps(a,xv); // <-- Computes absolute value
sse_t<float> result;
_mm_store_ps(result.data, xv);
std::cout << "x[0]: " << result.data[0] << std::endl;
std::cout << "x[1]: " << result.data[1] << std::endl;
std::cout << "x[2]: " << result.data[2] << std::endl; …Run Code Online (Sandbox Code Playgroud) 这是我的尝试.例如
df = pd.DataFrame({'a':[5,0,1,np.nan], 'b':[np.nan,1,4,3], 'c':[-3,-2,0,0]})
df.dropna(axis=1).max(axis=1,key=abs)
Run Code Online (Sandbox Code Playgroud)
过滤掉这些NaN值,但它的值为0或负值,而不是绝对值的高值
结果应该是一列
5
-2
4
3
Run Code Online (Sandbox Code Playgroud) 看来,在32位OS中ip2long返回signed int,在64位OS中返回unsigned int.
我的应用程序正在处理10台服务器,有些是32位,有些是64位,所以我需要它们以同样的方式工作.
在PHP文档中有一个技巧可以使结果始终无符号,但由于我的数据库已经充满了数据,我想让它签名.
那么如何在PHP中将unsigned int更改为已签名的int?
在operators模块中,我们有一个辅助方法operator.abs。但是在pythonabs中已经是一个函数,我知道__abs__在对象上调用该方法的唯一方法无论如何都是通过函数调用。
是否有其他一些我不知道的奇特方式来获取数字的绝对值?如果没有,为什么operator.abs首先存在,以及您必须使用它而不是普通 old 的示例是什么abs?
我使用以下脚本进行绘图:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pylab as pl
import math
import matplotlib as mpl
from matplotlib.ticker import MultipleLocator
from matplotlib.colors import LinearSegmentedColormap
cdict1 = {'red': ((0.0, 1.0, 1.0),
(0.4, 1.0, 1.0),
(0.7, 0.0, 0.0),
(1.0, 0.0, 0.0)),
'green': ((0.0, 1.0, 1.0),
(0.1, 0.0, 0.0),
(1.0, 0.0, 0.0)),
'blue': ((0.0, 1.0, 1.0),
(0.1, 0.0, 0.0),
(0.4, 0.0, 0.0),
(1.0, 1.0, 1.0))
}
white_blue_red = LinearSegmentedColormap('WhiteBlueRed', cdict1)
plt.register_cmap(cmap=white_blue_red)
x = np.loadtxt('data.dat',
unpack=True)
plt.scatter(x[0], x[1], marker='.', …Run Code Online (Sandbox Code Playgroud) 绝对差是两个数字之间差的绝对值。假设我有 2 个int变量(x和y),我想找到绝对差。一个简单的解决方案是:
unsigned diff = abs(x-y);
Run Code Online (Sandbox Code Playgroud)
然而,如果发生溢出(例如 if xisINT_MIN和yis ) ,这些会调用未定义的行为并给出不正确的结果INT_MAX。这会返回1(假设环绕行为)而不是按UINT_MAX预期返回。