问题标签 [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 - np.dot() 与 Python 广播
我有两个 numpy 数组,一个形状为 (3000,),另一个是 20 个 3000 x 3000 矩阵的数组,即形状 (20, 3000, 3000)
我正在做一个 numpy dot 产品。
这行得通,输出dotprod1
是一个形状为 (20, 3000) 的数组。
但是,如果我想再次使用点积怎么办?
这给出了一个错误。
我想输出 20 个值。如何使用广播来做到这一点?
python - 在这个 numpy 示例中如何应用广播?
我正在学习 numpy 并且对广播有点困惑,这是我的设置。我有两个矩阵
所以 r 是 (3*1) 矩阵,而 y 是一个秩为 1 的矩阵,形状为 (3,)。
如果我做 y.dot(r),我得到 14,假设 numpy 在 y 上应用广播,使其成为 (1*3),然后它与 r(3*1) 进行点积,因此结果矩阵将为 1* 1.
但是,当我执行 r.dot(y) 时,它会引发错误。为什么它在这里不做同样的事情?它应该使 y(1*3) 和 r 成为(3*1),它应该给出一个 3*3 矩阵。这个推理有什么问题?
python - Numpy 函数获取添加数组的形状
tl; dr:如何预测 numpy 在多个数组中广播返回的形状,而无需实际添加数组?
我有很多使用 numpy (Python) 广播规则的脚本,因此基本上一维输入会产生多维输出。举个基本的例子,理想气体定律(压力 = rho * R_d * 温度)可能看起来像
这里没有必要,但在更复杂的函数中,用正确的形状初始化数组非常有用。如果压力和温度具有相同的形状,则 rho 也具有该形状。如果压力具有形状 (n,) 而温度具有形状 (m,),我可以调用
得到形状为 (n,m) 的 rho。这让我无需循环就可以绘制具有多个温度值的图rhoIdeal
,同时仍然允许脚本接受相同形状的数组并逐个元素地计算结果。
我的问题是:是否有一个内置函数可以返回与多个输入兼容的形状?行为类似的东西
实际上不必对数组求和?如果没有内置函数,一个好的实现会是什么样子?
python - how to multiply pandas dataframe with numpy array with broadcasting
I have a dataframe of shape (4, 3) as following:
I want to multiply each column of the dataframe with a numpy array of shape (4,):
In numpy, the following broadcasting trick works:
However, it doesn't work in the case of pandas dataframe, I get the following error:
Any suggestions?
Thanks!
python - 在 Numpy 中更快地执行 `A[tuple(BT)]`
我有一个 M 乘 N 数组I
,其中的每一行都是一个 N 维数组的索引A
。我想要一个矢量化表达式来从 A 中获取 M 索引值的一维数组。我发现这样A[tuple(I.T)]
做是正确的,但分析表明它非常昂贵,尽管被矢量化了。它也不是特别优雅或“自然”,A[I]
并且A[I.T]
做一些完全不同的事情
这样做的正确方法是什么?它也应该适用于像
python - Adding a 1-D Array to a 3-D array in Numpy
I am attempting to add two arrays.
I want to get something out that is like
So adding entries to each of the matrices at the corresponding column. I know I can code it in a loop of some sort, but I am trying to use a more elegant / faster solution.
python - 使用 Python 广播的内存高效 L2 规范
我正在尝试使用欧几里得距离实现一种方法,根据它们与样本数据集的相似性对测试数据集中的点进行聚类。测试数据集有 500 个点,每个点是一个 N 维向量(N=1024)。训练数据集大约有 10000 个点,每个点也是一个 1024 维向量。目标是找到每个测试点和所有样本点之间的 L2 距离,以找到最接近的样本(不使用任何 python 距离函数)。由于测试数组和训练数组的大小不同,我尝试使用广播:
其中 test 是一个形状数组 (500,1024),而 train 是一个形状数组 (10000,1024)。我收到了 MemoryError。但是,相同的代码适用于较小的数组。例如:
有没有更高效的内存方法来进行上述计算而无需循环?根据网上的帖子,我们可以使用矩阵乘法 sqrt(X * X-2*X * Y+Y * Y) 来实现 L2-范数。所以我尝试了以下方法:
由于矩阵具有不同的形状,当我尝试广播时,存在维度不匹配,我不确定什么是正确的广播方式(对 Python 广播没有太多经验)。我想知道在 Python 中将 L2 距离计算实现为矩阵乘法的正确方法是什么,其中矩阵具有不同的形状。结果距离矩阵应具有 dist[i,j] = 测试点 i 和样本点 j 之间的欧几里得距离。
谢谢
python - 使用 Numpy 数组,出现错误
我正在尝试编写函数,为 BS 模型计算金融希腊语。
我从这样的事情开始:
'...' 表示,正在计算更多的希腊语,但这并不重要。
它工作正常,我有合理的价值观,漂亮的情节等;但是,我的老师告诉我,他希望看到这些值不仅与时间(x 轴上的 tau)相比,而且与 S(S - 股票价格,x 轴上)的对比。换句话说,我必须计算 tau 和 S 变化的希腊语。
我试过以下:
对于这两个版本,我都初始化了以下参数并运行(a-variable):
它在第一种情况下工作正常,但是当我想改变 S(第二个函数)时,我收到以下错误:
我用谷歌搜索了一下,看起来 Numpy 库和它的数据类型(数组)有一些东西。我不是非常熟练或经验丰富的程序员(仍在学习),所以我自己无法弄清楚。
看起来它现在只适用于 S == 100 (S = T),但这不是理想的解决方案。
我试过了:
但它只输出:
请帮我找到这个可行的解决方案。我不知道我是否应该尝试循环 S(我尝试过但失败了......),做一些数据类型技巧,以其他方式计算(如何?)或其他任何方式。
python - 将不同大小的numpy数组相乘
假设我有:
我想要的是一种矢量化且有效的方法:
尽可能快地运行非常重要。