问题标签 [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 回答
2016 浏览

python-2.7 - AttributeError:“numpy.ufunc”对象没有属性“__module__”

我已经在 conda'pip install scikit-image'环境中安装了 skimage 。我正在使用python 2.7.

当我尝试导入时:

从 skimage 导入转换

它给了我错误:

AttributeError:“numpy.ufunc”对象没有属性“模块

有人可以帮我吗?

0 投票
1 回答
50 浏览

python - NumPy right_shift 给出全零

我有

这导致全零b。你能解释一下这种行为吗?

0 投票
1 回答
1492 浏览

python - numpy中结构化数组的元素总和

我想知道是否有可能对两个具有相同形状的结构化 numpy 数组执行逐元素求和(或其他操作)。

说“ufunc'add'不包含签名匹配类型dtype的循环([('x','

如果不可能,那么理解为什么在 numpy.

0 投票
1 回答
2329 浏览

python - Numpy矢量化签名定义 - ValueError

我正在尝试使用 Python/Numpy 矢量化函数来减少 for 循环。

我的函数调用看起来像这样

矢量化函数定义为

in_vectors 是一个形状数组

但是前两个维度 (3,6) 可以是任何东西。这些是循环尺寸。

p 是一个形状数组

我的计算是这样的

在这个函数中,in_vector 是一个形状为 (200, 3) 的数组,p 是相同的形状 (3,)。out_vector 形状为 (3,)。这是对的。

out_vectors,向量化函数的结果应该是(6,3)。对于 input_vectors 的每个第二维(在本例中为 6),这应该是对 input_vectors 的第一维(在本例中为 3)求和的 my_calculation 的结果。结果的第二维是 3(向量的 x、y、z 分量),与 p 的维数和 input_vectors 的第四维相同。我希望这一切都清楚了。

我的代码在矢量化函数调用中失败

堆栈跟踪

0 投票
1 回答
1000 浏览

python - 如何使用 __array_ufunc__ 覆盖 numpy ufunc

我正在尝试使用 numpy v1.13 中引入的 __array_ufunc__ 方法来实现 numpy 的 ufunc 以使用类。

为简化起见,该类可能如下所示:

现在,如果我尝试在这两者之间应用 np.add ,我会得到预期的结果,因为 np.add 依赖于add。但是如果我打电话说 np.exp,我会得到一个预期的错误:

现在我想做的是“覆盖”所有 numpy ufunc 以在此类中顺利工作,而无需重新定义类中的每个方法(exp(self)、log(self)、...)。

我打算使用 numpy ufunc 的 [__array_ufunc__] 1来执行此操作,但我不太了解该文档,因为它没有提供简单的实现示例。

如果有人对这个看起来很有希望的新功能有任何经验,你能提供一个简单的例子吗?

0 投票
2 回答
1802 浏览

python - `numpy.positive` 的用例

(版本 1.13+)中有一个positive函数numpy,它似乎什么也没做:

文档说:Returned array or scalar: `y = +x`

该功能的用例是什么?

0 投票
0 回答
128 浏览

numpy - 定制“内产品”/“外产品”

我有以下代码结构:

我们可以用更 numpy-y 的方式解决这个问题 - 可能用ufunc?

0 投票
1 回答
688 浏览

python - Numpy power ufunc 在特定轴上运行

我觉得奇怪的是 numpy.power 没有轴参数...是因为有更好/更安全的方法来实现相同的目标(将 3D 数组中的每个 2D 数组提升到 1D 数组的幂)。

假设您有一个 (3,10,10) 数组 (A),并且您希望将每个 (10,10) 数组提升到形状为 (3,) 的数组 B 中的元素的幂。你应该可以通过使用来做到这一点np.power(A,B,axis=0),对吧?然而它会产生以下 TypeError :

由于似乎 power 没有轴或轴参数(尽管是 ufunc),所以首选的方法是什么?

可能有一个使用该ufunc.reduce方法的解决方案,但我真的不知道它会如何工作numpy.power......

现在我做:

但它看起来很难看,并且可能不如 numpy 方法有效。

谢谢

0 投票
1 回答
974 浏览

numpy - numpy.add.at 可以与 2D 索引一起使用吗?

我有 2 个数组:
-image是一个 NxN 数组,
-indices是一个 Mx2 数组,其中最后一个维度将有效索引存储到image.

我想imageindices.

似乎numpy.add.at(image, indices, 1)应该做的伎俩,除了我不能让它执行二维索引image

结果:

期望的结果:

0 投票
1 回答
621 浏览

python - 为什么在一个大矩阵 $M$ 上的 NumPy 减法比将 $M$ 分成更小的矩阵然后减法时要慢?

我正在处理一些代码,其中我有几个矩阵,并想从每个矩阵的每一行中减去一个向量 $v$ (然后对结果做一些其他的事情)。当我使用 NumPy 并希望尽可能地“向量化”时,我认为我可以通过将所有矩阵存储为一个大(“连接”)矩阵并从中减去 $v$ 来加快运行时间。问题是我的代码在这个假定的优化之后运行速度变慢了。事实上,在某些情况下,分解矩阵并分别减去会明显更快(参见下面的代码示例)。

你能告诉我这是什么原因造成的吗?天真地,我会假设这两种方法都需要相同数量的基本减法运算,并且大矩阵方法更快,因为我们避免使用纯 Python 循环分别遍历所有矩阵。

最初,我认为减速可能是由于初始化了一个更大的矩阵来存储减法的结果。为了测试这一点,我在我的测试函数之外初始化了一个大矩阵并将它传递给 np.subtract 命令。然后我认为广播可能导致性能缓慢,所以我手动将向量广播成与大矩阵相同的形状,然后减去得到的广播矩阵。两种尝试都未能使大矩阵方法具有竞争力。

我制作了以下 MWE 来展示这个问题。

导入 NumPy 和一个计时器:

然后我有一些参数可以控制矩阵的大小和数量。

我们可以生成一个测试矩阵列表,如下所示。大矩阵只是列表中所有矩阵的串联。我们从矩阵中减去的向量是随机生成的。

这是我用来评估减法速度的三个函数。第一个从列表中的每个矩阵中减去向量,第二个从(连接的)大矩阵中减去向量,最后一个函数试图通过预初始化输出矩阵和广播向量来加速后一种方法。

我通过运行对这三个函数进行基准测试

对于上述参数,我得到的时间

天真地,我希望与几个矩阵方法相比,大矩阵方法更快或至少具有竞争力。我希望有人能给我一些见解,了解为什么不是这种情况以及如何加快我的代码速度!