问题标签 [array-broadcasting]

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 回答
4824 浏览

python - Python,Numpy,多维数组相加的方法(广播)

我有许多具有共同索引的不同大小的数组。

例如,

我想将它们一起添加到一个新的数组中,Arr3 是三维的。例如

请注意,在这种情况下,值应该对齐,例如

我一直在尝试使用以下方法

现在,当将两个方阵相加时,我已经能够完成这项工作。

但是,在我的实际程序中,我不会有这个问题的方阵。此外,当您开始按如下方式向上移动维数时,此方法会占用大量内存。

所以我的问题有两个部分:

  1. 是否可以从具有共同“共享”轴的两个不同形状的 2D 阵列创建 3D 阵列。
  2. 这种方法可以在高阶维度上扩展吗?

非常感谢任何帮助。

0 投票
2 回答
5038 浏览

python - np.array 中的广播函数调用

我正在尝试创建一个填充了一个对象的 NumPy 数组,我想知道是否有一种方法可以向整个数组广播,以便每个对象执行某些操作。

代码:

就目前而言,这会返回一个错误。我尝试按照手册将 dtype 更改为:_object,但似乎没有任何效果。

0 投票
1 回答
3678 浏览

python - numpy.einsum 中的省略号广播

我无法理解为什么以下内容不起作用:

我有一个可以是三维或六维的数组前置因子。我有一个具有四个维度的偶极子阵列。dipoles 的前三个维度与 prefactor三个维度匹配。

由于我不知道prefactor的形状,我使用省略号来说明prefactor中的三个可选维度:

(在这里的例子中,prefactor.shape 是 (1, 1, 1, 160, 160, 128) 和 dipoles.shape 是 (160, 160, 128, 3)。执行时,我得到错误:

操作数 1 没有足够的维度来匹配广播,并且无法扩展,因为在开始和结束时都指定了爱因斯坦和下标

但是,当我在第二项中添加省略号时,它确实有效:

只是我不明白为什么,因为那里不需要省略号。有人知道这里发生了什么吗?

在http://comments.gmane.org/gmane.comp.python.numeric.general/53705上提出了同样的问题,但还没有令人满意的答案。

0 投票
2 回答
65 浏览

python - 有没有办法使用 numpy 广播不使用任意 M x N 矩阵?

我有多个 0 和 1 的矩阵,我想找到它们的 NOT 版本。例如:

会成为:

现在我有

这工作得很好,但我有一种感觉,我已经看到这真的很简单,只是通过广播。不幸的是,我查到的所有东西都没有敲响。我假设类似的操作将用于对矩阵的值进行阈值处理(即类似的东西1 if x > .5 else 0)。

0 投票
2 回答
844 浏览

python - python中的自动数组演算(numpy)

我有一个依赖于几个变量的函数,比如说y=f(x1,x2,x3,x4). 如果每个变量都是一个简单的数字,那么结果应该是一个普通的数字。如果其中一个变量是一个数组,我需要结果也是一个数组。依此类推:如果两个变量是数组,我需要结果是一个二维数组。等等。

例子:

怎么做?(为了让我的程序的非 Python 读者尽可能清楚?)

0 投票
3 回答
673 浏览

python - 使用 numpy 获取 3D 空间中所有对象相对于彼此的位置

我想得到一个numpy数组中向量对的所有排列之间的差异。

在我的特定用例中,这些向量是对象列表的 3D 位置向量。

因此,如果我有一个数组r = [r1, r2, r3]wherer1和是 3 维向量,我想要以下内容r2r3

-操作按元素应用于向量的位置。

基本上,这个向量等价于:

但是,该outer函数似乎在减法之前使我的向量数组变平,然后对其进行整形。例如:

我期待的结果是:

我可以在不迭代数组的情况下实现上述目标吗?

0 投票
3 回答
967 浏览

python - 如何沿矩阵轴执行滚动求和?

X给定具有T行和列的矩阵k

如何X使用 lag 沿行轴执行滚动累积和H

请注意,在广播/矢量化最佳实践下,最好避免跨步和卷积。

0 投票
1 回答
1006 浏览

python - 在两个向量上广播一个函数以获得一个二维 numpy 数组

我想在向量上广播一个函数 f,以便结果是一个矩阵 P,其中 P[i,j] = f(v[i], v[j])。我知道我可以简单地做到这一点:

或更老套:

但我正在寻找最快和最整洁的方法来做到这一点。这似乎是 numpy 应该内置的广播功能。有什么建议么?

0 投票
4 回答
300978 浏览

python - numpy.newaxis 如何工作以及何时使用它?

当我尝试

结果给了我一个 x 轴从 0 到 1 的二维图框。但是,当我尝试使用numpy.newaxis切片向量时,

除了将行向量更改为列向量之外,是否相同?

一般情况下,有什么用numpy.newaxis,应该在什么情况下使用呢?

0 投票
1 回答
1137 浏览

python - NumPy 广播不起作用

我正在尝试广播两个向量之间的差异。这适用于像这样的简单情况:

但是当我尝试做同样的事情但尺寸更大时,这是行不通的

我想执行data - centers,所以我可以得到输出: