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

python - Numpy - 用向量行创建矩阵

我有一个向量[x,y,z,q],我想创建一个矩阵:

有 m 行。我认为这可以使用广播以某种聪明的方式完成,但我只能考虑使用 for 循环来完成。

0 投票
1 回答
205 浏览

python - 如何理解这个 np.einsum('kij',A) 的结果?

例如,

这仍然A没有问题。

但如果我这样做print np.einsum('kij', A)的形状是(3, 4, 2)。不应该(4, 2, 3)吗?

print np.einsum('cab', A)形状的结果也(4, 2, 3)没有问题。为什么print np.einsum('kij', A)不一样?

0 投票
1 回答
1383 浏览

python - python中累积和的向量化

我正在尝试对我的代码进行矢量化/广播(不确定它的正式名称)以使其更快,但我不太明白。我认为我应该使用的是 numpy.cumsum (axis = 0),但我不知道如何(快速)在正确的数组中使用它。

我想要这段代码基本上是l1的绝对和,用于将l2中的每个元素添加到l1中的所有数字。所以这给出的不是一个答案,而是 len(l2) 数量的答案。下面的(非矢量化)代码给出了正确的输出。

任何人都可以提供答案或提示吗?

0 投票
1 回答
16311 浏览

python - 有效地减去不同形状的numpy数组

使用 numpy 的优秀广播规则,您可以v从形状 (5,3) 数组X中减去形状 (3,) 数组

结果是一个形状 (5,3) 数组,其中每一行i都是差异X[i] - v

有没有办法从中减去一个形状 (n,3) 数组wX以便在不显式使用循环的情况下w从整个数组中减去每一行?X

0 投票
3 回答
505 浏览

python - 用于获取锯齿状切片的 numpy 简写

我有一个我经常做的手术,我称之为“锯齿状切片”,因为我不知道它的真实名称。最好通过示例来解释:

唯一的问题是做这个a[np.arange(a.shape[0]), entries_of_interest]索引有点麻烦(为了这个而必须构造“np.arange(a.shape [0])”似乎很愚蠢)。我想要类似:操作员的东西,但:做别的事情。有没有更简洁的方法来做这个操作?

最佳答案:

不,本机 numpy 没有更好的方法。如果需要,您可以为此创建一个辅助函数。

0 投票
3 回答
212 浏览

python - 未知维度张量的元素乘法

如何对具有以下形状的张量进行元素乘法?这里的第二个数组总是假定为 2D。

我想广播所有标有?的维度,其中我不知道先验的数字。我考虑过的可能解决方案(但不知道该怎么做):

  • 将可变数量的轴添加到第二个数组
  • 反转两个数组的轴的顺序,然后再次反转它们

任何指针都会很棒。

0 投票
2 回答
93 浏览

python - 将单独的 1D np.arrays 转换为 2D np.arrays 列表

我正在尝试将三个一维数组转换为二维数组列表。我设法通过创建一个空的 ndarray 并逐行填充它来做到这一点。有人可以告诉我一个更优雅的方法吗?

当前有效的不雅方法:

0 投票
1 回答
2067 浏览

python - 矩阵和向量之间的numpy广播?

我正在学习 numpy 线性阿尔格巴,我想执行一个简单的计算:我有:

我要计算/输出的内容:

基本上是在 m 的每一行和 v 的每个元素之间执行逐元素除法

我可能可以通过一些 for 循环来做到这一点,但我想知道“正确”的做法。

我感觉它与广播有关,但仅此而已。

谢谢。

0 投票
2 回答
1791 浏览

python - 循环遍历 Pandas Dataframe 以制作虚拟变量(1 或 0 输入)的有效方法

我正在学习数据科学,并想为我的数据集制作虚拟变量。

我有一个具有“产品类别”列的数据框,该列是匹配类别的列表,类似于 ["Category1", "Category2".."CategoryN"]

我知道 Pandas 有很好的功能,可以自动生成虚拟变量(pandas.get_dummies),但在这种情况下,我不能使用它,我猜(?)。

我知道如何遍历每一行以将 1 附加到每列的匹配元素。我目前的代码是这样的:

但是,上面的代码效率不高,我不能使用它,因为我有超过 100,000 行。我想以某种方式对整个数组进行操作,但我不知道该怎么做。

有人可以帮忙吗?

0 投票
4 回答
3187 浏览

python - 为什么 numpy.dot 会以这种方式表现?

我试图理解为什么 numpy 的dot函数会这样:

现在np.dot(M, V1)并按np.dot(M, V2)预期行事。但V3结果V4令我惊讶:

我预计(2, 9, 5)(3, 2, 9, 5)分别。另一方面,np.matmul 符合我的预期:矩阵乘法在第二个参数的前N ​​- 2 个维度上广播,结果具有相同的形状:

所以我的问题是:这样做的理由是 np.dot什么?它是服务于某个特定目的,还是应用某些一般规则的结果?