问题标签 [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 投票
4 回答
12560 浏览

python - Matlab相当于Numpy广播?

我试图找到某种方法从 Matlab 中的 3*(一个大数字)矩阵的每一列中减去一个大小为 3 的向量。当然我可以使用循环,但我试图找到一些更有效的解决方案,有点像 numpy 广播。哦,我不能使用 repmat 因为我没有足够的内存来使用它(因为它创建了另一个 3*(一个大数字)矩阵)......

这可能吗?

0 投票
3 回答
13433 浏览

python - Numpy 数组广播规则

我在理解 Numpy 中数组广播的规则时遇到了一些麻烦。

显然,如果您对两个具有相同尺寸和形状的数组执行逐元素乘法,一切都很好。此外,如果将多维数组乘以标量,它也可以工作。这个我明白。

但是如果你有两个不同形状的 N 维数组,我不清楚广播规则到底是什么。该文档/教程解释说:为了广播,操作中两个数组的尾轴大小必须相同或其中之一必须是一个。

好的,所以我假设通过尾随轴他们指的NM x N数组中的。那么,这意味着如果我尝试将两个具有相同列数的二维数组(矩阵)相乘,它应该可以工作吗?除了它不...

由于两者A都有B两列,我原以为这会起作用。所以,我可能在这里误解了“尾轴”一词,以及它如何应用于 N 维数组。

有人可以解释为什么我的示例不起作用,以及“尾随轴”是什么意思吗?

0 投票
4 回答
1106 浏览

python - 有没有更好的方法来广播数组?

我想将一个数组广播b到它与另一个数组进行算术运算时所采用的形状a

例如,如果a.shape = (3,3)andb是一个标量,我想得到一个数组,其形状是(3,3)并且用标量填充。

一种方法是这样的:

虽然这实际上可行,但我不禁觉得它看起来有点奇怪,并且对于其他查看我正在尝试做的代码的人来说并不明显。

有没有更优雅的方法来做到这一点?我查看了 的文档np.broadcast,但速度要慢几个数量级。

0 投票
1 回答
119473 浏览

python - Numpy`ValueError:操作数无法与形状一起广播......`

我使用 python 2.7 并尝试预测从 1.00000000 到 3.0000000008 的一些随机数据。我的数组中有大约 196 个项目,我得到了错误

我似乎无法自己解决这个问题。任何帮助或相关文档的链接将不胜感激。

这是我正在使用的生成此错误的代码

0 投票
3 回答
1748 浏览

python - numpy 3D meshgrid 仅作为视图

我有一个由间距定义的立方网格xi,yi,zi

我还在W该网格上设置了一组标量值。W.shape() == size. 我想使用scipy 的线性插值,它需要作为输入:

scipy.interpolate.LinearNDInterpolator(points, values)

参数 :

points: ndarray of floats, shape(npoints, ndims)数据点坐标。

values:浮点数或复数的ndarray,形状(npoints, ...)数据值。

我如何创建一组假的points(通过神奇的广播)xi,yi,zi?现在我正在创建一个中间数组来馈送到插值函数 - 有没有更好的方法?

相关问题3D 中的 Numpy meshgrid。这篇文章中的答案实际上创建了网格 - 我只想将其模拟为另一个函数的输入(首选纯 numpy 解决方案)。

0 投票
2 回答
219 浏览

numpy - 在numpy中交换多值的子集

给定一个如下所示的起始 numpy 数组:

当有重复时,将一组值交换为另一组值的最有效方法是什么?例如,让

一个低效的交换方法会迭代s1s2因此:

作为输出给予

zip有没有办法在没有循环的情况下基本上就地执行此操作?

0 投票
1 回答
637 浏览

python - Numpy:广播+布尔索引

我有以下 numpy 数组

如何将以下伪代码转换为高效的真实代码?数组可能很大,可能超过 1 亿个元素。

0 投票
1 回答
239 浏览

python - 跨索引数组 Numpy 广播

我正在寻找一种 Numpy(即希望更快)的方式来执行以下操作:

我想摆脱列表理解并做这样的事情(虽然,我知道这行不通)

arr始终是长度等于 的长度的整数的嵌套列表x。内部列表的长度不一定相同(即arr是一个参差不齐的列表)

0 投票
1 回答
4828 浏览

python - 将 Numpy 3D 数组乘以 1D 数组

我正在尝试将 3D 数组乘以 1D 数组,这样沿第 3(深度:d)维度的每个 2D 数组的计算方式如下:

1D_array[d]*2D_array

我最终得到一个看起来像的数组,比如:

这将是正确地将 np.ones((3,2,2)) 与 [1,2,3] 相乘的结果。

我已经尝试了一段时间,无论我做什么我都不能得到这个结果,只是主题的变化。我该如何正确地做到这一点?

谢谢你的帮助。

0 投票
2 回答
3129 浏览

python - 将数组广播到不同的形状(添加“假”尺寸)

在 python 中(使用 numpy),我可以将数组广播到不同的形状:

有没有办法在fortran中达到同样的效果?我有一个子例程,它期望2D传入一个数组——我想将我的一维数组“广播”到二维,正如我在上面演示的那样。看起来很重要,我的二维数组确实有一个明确的接口。

作为旁注,我认为这个功能可能是由reshape内在提供的, - 类似于:

但在阅读文档后,我认为这是不可能的,因为order似乎需要包括所有数字 1 到“N”。

编辑:为了更清楚一点,我正在寻找一种简单的方法来在输入上创建几个转换,a例如:

情况1

案例2

任意维度的加分1 :

等等

1免责声明——我实际上并没有给回答者加分的超能力;-)