问题标签 [numpy-ufunc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3689 浏览

python - 根据索引、列名和原始值映射 Pandas 数据框?

我想将数据帧的值映射到来自不同数据帧的值(也可能是一个字典)。我要映射到的元素取决于三件事:

  1. 原始值,
  2. 索引名称和
  3. 列名。

例如我有以下数据框

看起来像这样:

还有另一个名为 mapping 的数据框,其中包含映射规则:

因此,映射看起来像这样:

我想根据某个阈值将每个元素映射到两个值之一。所有索引特征组合的阈值都不同。在映射数据帧中,每个列表的第一个元素表示阈值。如果原始值小于此阈值,则应将其映射到列表的第二个元素。如果大于或等于,则应映射到第三个元素。

我可以通过遍历行和列来获得所需的结果(见下文)。

结果(df_mapped):

但是实际的数据集在两个维度(行和列)上都很大,我正在寻找一种有效的方法来计算它。当使用 apply() 或 map() 之类的东西时,我似乎永远无法访问所需的所有三件事(值、索引和列名)......有没有一种有效的方法来实现预期的结果?非常感谢!

0 投票
0 回答
163 浏览

python - 是否可以在不使用 numpy 的情况下在 Python 中编写这两个函数?

我试图在不使用 Numpy 的情况下进行绘图,但是我可以写什么来替代以下函数?

我发现的一些函数的替代方案给出了不同的输出。

我想在不使用 Numpy 的情况下获得相同的输出。

0 投票
1 回答
138 浏览

python - 如何防止numpy折叠行?

我有一个函数,它接受一个 numpy 数组并输出一个 numpy 数组。但是,当输出数组包含一个常量值时,使用 numpy 数组调用函数会导致所述值被“折叠”。

我正在尝试使用 numpy 编写向量微积分库,并且希望将向量传递给向量值函数,而不是依赖迭代。

人们会期望r1(t)r2(t)具有相同的形状,但事实并非如此。r1(t)产生一个看起来像 的对象 array([ array([...]), 1, dtype=object),并r2(t)产生一个看起来像的东西array([ [...], [...])(其中[...]表示有效的浮点数组)。我猜r2(t)由于浮点错误不同,它可以正常工作,但我可能是错的。有没有办法防止 numpy 折叠第二行或“展开”它?

0 投票
1 回答
102 浏览

numpy - 有没有办法使用 numpy 将函数应用于没有循环的二维数组

我正在尝试使用 Transforms3d python 包将四元数列表转换为相应的方向矩阵。

每个四元数是输入的 4 元素列表/数组,并使用 transforms3d.quaternions.quat2mat(q) 函数返回 3x3 方向矩阵。

我有一些需要转换的 10K-100K 四元数列表(nx4 数组),虽然使用循环很容易做到这一点,但我认为如果有某种方法可以使过程矢量化,它可能会更快。

一些搜索建议我可以简单地做类似 np.vectorize() 的事情,但我正在努力做到这一点。列表理解工作正常,但我猜 numpy 向量解决方案会快得多。

不幸的是,我什至无法运行 numpy 版本,无论是否有签名(这可能是错误的)。

> Traceback(最近一次通话最后一次):

文件“”,第 1 行,在 vfunc(aa)

文件“c:\wpy64-3740\python-3.7.4.amd64\lib\site-packages\numpy\lib\function_base.py”,第 2091 行,调用 返回 self._vectorize_call(func=func, args=vargs)

文件“c:\wpy64-3740\python-3.7.4.amd64\lib\site-packages\numpy\lib\function_base.py”,第 2157 行,在 _vectorize_call res = self._vectorize_call_with_signature(func, args)

文件“c:\wpy64-3740\python-3.7.4.amd64\lib\site-packages\numpy\lib\function_base.py”,第 2198 行,在 _vectorize_call_with_signature 结果 = func(*(arg[index] for arg in参数))

文件“c:\wpy64-3740\python-3.7.4.amd64\lib\site-packages\transforms3d\quaternions.py”,第 133 行,在 quat2mat w, x, y, z = q

ValueError:没有足够的值来解包(预期 4,得到 2)

0 投票
1 回答
37 浏览

c - 编写numpy ufunc时如何处理复杂值?

基本上我有一个 numpy ufunc 可以对数组npy_cdouble进行操作。npy_cfloat例如:

然而,这不起作用,编译器说它qm_in具有 type ‘npy_cdouble’ {aka ‘struct <anonymous>’}。我该如何npy_cdouble正确对待?

0 投票
1 回答
67 浏览

python - 如何在 ufunc 中使用 numpy 的随机数生成器?

基本上我有一个需要一些随机性的 ufunc。为了使 ufunc 尽可能地重现,我想为此使用 numpy 的随机数生成器;基本上是因为这样设置种子会更直观。

但是我找不到 numpy.random C-API 的文档(有吗?)。

我目前的方法是这样的:

0 投票
1 回答
507 浏览

gpu - Numba 中的组合矢量化函数

我正在使用 Numba(版本 0.37.0)来优化 GPU 代码。我想使用组合矢量化函数(使用 Numba 的 @vectorize 装饰器)。

进口和数据:

这按预期工作:

输出:

但我想通过调用另一个矢量化函数来避免在“l2_norm”中使用“for”。

我试过这个:

但引发 TypingError:

关于如何执行这种组合的任何想法?

关于使用 Numba 优化 l2_norm 的其他方法有什么建议吗?

0 投票
2 回答
731 浏览

python-3.x - 如何将 Pearson 相关分析应用于 DataArray 的所有像素对作为相关矩阵?

我在生成具有维度('lon'、'lat'、'time')的单个 Netcdf 的相关矩阵(逐个像素)时面临严重困难。我的最终意图是生成所谓的远程连接地图。

该地图由相关系数组成。每个像素都有一个值,表示在 DataArray 中所有像素对的相关矩阵中找到的最高相关值(在模块中)。

因此,为了创建我的远程连接图,而不是循环遍历每个经度('lon')和每个纬度('lat'),然后检查所有可能的相关组合,其中一个更高的幅度,我正在考虑申请xr.apply_ufunction 内部带有包装的相关函数。

尽管我做出了努力,但我仍然没有了解 xr.apply_ufunc 幕后真正发生的事情。我所做的只是作为一个单一的结果矩阵,所有像素都等于 1(完美相关)。

请参见下面的代码:


这是气象学家和遥感研究的重要资产。它允许评估给定研究领域的潜在地球物理模式。

感谢您抽出宝贵时间,我希望尽快收到您的来信。

您忠诚的,

0 投票
0 回答
81 浏览

python - 在 Python 中使用带有矩阵函数的 numpy.meshgrid 时出错

我想 3D 绘制使用多个矩阵运算的 af(x,y) 函数。我想寻找可能的最大值和最小值。这种矩阵运算的原因是有时这种类型的函数可以用更简洁、更紧凑的形式表示。但是,我在尝试修复一些错误时遇到了问题。在该函数 f(x,y) 的构造中,我必须将 2 维向量 (x,y) 转换为 (x,y,0) 或 (x,0,y) 形式的 3 维向量) 或 (0,x,​​y)。基本上错误来自使用这两种类型的功能:

功能一:

有错误

功能二

有错误

0 投票
4 回答
936 浏览

python - numpy.median.reduceat 的快速替代方案

关于这个答案,有没有一种快速的方法来计算具有不相等数量元素的组的数组的中位数?

例如:

然后我想计算每组的数字和中位数之间的差异(例如,组的中位数01.025所以第一个结果是1.00 - 1.025 = -0.025)。因此对于上面的数组,结果将显示为:

由于np.median.reduceat不存在(尚),是否有另一种快速的方法来实现这一目标?我的数组将包含数百万行,因此速度至关重要!

可以假设索引是连续且有序的(如果不是,则很容易转换它们)。


性能比较的示例数据: