问题标签 [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.
python - Numpy:如何向量化应用于数据集的函数的函数形式的参数
最终,我想删除下面代码中的所有显式循环,以利用 C 而不是 python 中的 numpy 矢量化和函数调用。
下面简化了 numpy 在 python 中的使用。我有以下二次函数:
我正在尝试在给定相同大小的输入数据 x 和输出数据 y 的情况下优化 a、b、c 的选择(当然,这应该通过线性回归来完成……但请幽默)。假设 len(x)=100。易于使用标量 a、b、c 进行矢量化,以获得长度为 100 的结果。
假设我们知道 a,b,c 应该在 [-10,10] 之内,我通过构建一个网格并选择具有最小和平方误差的点进行优化。
对于 1331 个节点中的每一个,我想计算所有 1331 个长度为 100 的返回值。
如何利用广播来获取我的 1331 个项目列表,每个项目都有 100 个值,这些值是在 x 上调用 quadratic_func 的结果?答案必须使用矢量化、广播等来获得我正在寻找的数量级的速度改进。此外,答案必须使用对 quadratic_func 的调用——或更一般地说,my_func(*node, x=x)。
在现实生活中,我正在优化一个非线性函数,该函数甚至不接近凸函数并且具有许多局部最小值。如果我能达到“正确的”局部最小值,这是一个很好的函数形式——我已经知道如何做到这一点,但希望更快地到达那里!
python - 在python中沿轴广播/扩展布尔数组
我正在尝试沿向量广播布尔一维数组以隔离某些操作。
例如,如果我的布尔数组是:
和
我想进行逐行比较的矩阵是这种形式:
和
我想要的最终结果是:
我意识到这可以通过切片来完成,但我需要使用逻辑数组来提高速度。有没有办法“扩展”布尔向量以便它在行上工作?
这个想法是能够在一行中计算一个函数,以便
谢谢!
python - np.choose 在广播后没有给出想要的结果
我想从 suitCounts 中选择 maxsuit 中指定的第 n 个元素。我确实广播了 maxsuit 数组,所以我得到了一个结果,但不是想要的。任何我在概念上做错的建议都值得赞赏。我不明白 的结果np.choose(self.maxsuit[:,:,None]-1, self.suitCounts)
,这不是我想要的。
期望的结果是:
python - numpy 数组的多个索引:IndexError:无法将 numpy.ndarray 类型的切片条目强制转换为整数
有没有办法在 numpy 数组中进行多个索引,如下所述?
这个问题可能类似于计算数组上的移动平均值(但我想在没有提供任何函数的情况下这样做)。
python - Pandas 使用列标题查找/透视
我有一个包含流域 ID 和土地覆盖类别的表格:
和一个单独的查找表,其中包含每个流域/土地覆盖组合的面积:
我想做的是将一列附加到包含查找表中相应行/列值的第一个表,如下所示:
我已经设法通过使用 for 循环迭代来做到这一点:
但考虑到我桌子的大小,这很慢。有没有更快的方法来做到这一点而不涉及迭代?我一直在尝试使用 MultiIndexing 和数据透视表,但到目前为止没有任何效果。
numpy - Numpy 广播到第 4 维:... vs. : vs None
在 montecarlo 模拟中,我有以下 7 张扑克牌,供 2 名玩家和 3 次不同的 montecarlo 运行。
自我卡:
对应的套装是:
自我西装
现在我想“合并”数组,将卡片数组扩展到第 4 维,大小为 4:0 包含所有套装==1、1 所有套装==2、2 所有套装==3和 3 所有西装 ==4
我可以轻松创建 4 个不同的数组:
然后将它们堆叠在一起:
预期结果的形状为 (4, 3, 8, 2)
虽然在上述情况下这可能是有道理的,但这并不总是可能的,特别是如果有超过 4 个案例需要堆叠在一起,这让我想到了我的问题:
我怎样才能通过广播做到这一点?下面是我的具体问题:
我已经尝试了几件事。
让我们关注第一步,让布尔值在做花色==np.arange(4) (第二步只是与需要以与花色相同的方式广播的卡片的乘法)。我的理解是我们想为 suits 数组添加一个维度,所以我们不应该用 3 点符号表示这个:
self.suits[...,:,:,:]==np.arange(4)
?相反,以下似乎几乎可以工作:(self.suits[:,:,:,None]==np.arange(4)
除了它在错误的位置添加维度)。以下也不起作用:self.suits[None,:,:,:]==np.arange(4)
. 如何在第一维中扩展数组,以使结果与上述堆栈中的结果相同?在什么情况下我需要
...
和什么时候None
?我希望使用 ,...
因为这将表明需要根据需要扩展此维度(在本例中为 4 的大小)?为什么这似乎是不正确的,而是使用 None ?
python - 锯齿状/锯齿状 Numpy.array 的乘法的定义是什么?
我不明白乘以 Numpy.arrays 时会发生什么。
例如,使用锯齿状(或锯齿状)数组
我明白了
但是,如果我稍微修改一下
我明白了
我想找到数组乘法的定义。
python - 在 Numpy 中进行缩减或扩展的广播
在下面的代码中,我们计算所有给定点对之间的向量大小。为了在 NumPy 中加速这个操作,我们可以使用广播
或外部产品迭代
我的问题是如何使用广播或外部产品迭代来创建一个格式为 10x10x6 的数组,其中最后一个轴包含一对(扩展)中两个点的坐标。并且以相关的方式,是否可以直接使用广播或外积迭代来计算对距离,即在不首先计算差异向量(约简)的情况下产生形式为 10x10 的矩阵。
为了澄清,以下代码使用慢循环创建所需的矩阵。
这是使用外积迭代计算距离(或应用任何其他函数,该函数采用一对中两个点的 6 个坐标并产生一个标量)的失败尝试。
numpy - 在 Numpy 中管理高维度
我想写一个有 4 个变量的函数 : f(x1,x2,x3,x4)
,每个变量都有不同的维度。
这可以通过 来实现f(x1,x2[newaxis],x3[newaxis,newaxis],x4[newaxis,newaxis,newaxis])
。
你知道更聪明的方法吗?
python - 用于多个开始和停止值的矢量化 NumPy linspace
我需要创建一个二维数组,其中每一行可能以不同的数字开始和结束。假设给出了每行的第一个和最后一个元素,并且所有其他元素只是根据行的长度进行插值在一个简单的情况下,假设我想创建一个 3X3 数组,该数组在 0 处具有相同的开始,但由下面的 W 给出不同的结束:
有没有比以下更好的方法来做到这一点: