Numpy 应用于多维数据的沿轴计算

By simon at 2019-05-12 • 0人收藏 • 13人看过

我正在将一个 j 语言的代码翻译成 Python,但是 Python 的 apply 函数的方法对我来说似乎不太清楚..。

我现在有一个(3,3,2)矩阵 a 和一个(3,3)矩阵 b。

我想把每个矩阵除以 b 中的行:

一个 np.arange (1,19)。 重塑(3,3,2)数组([[1,2] ,[3,4] ,[5,6] ,[7,8] ,[9,10] ,[11,12] ,[13,14] ,[15,16] ,[17,18]])。 重塑(3,3)数组([1,2,3] ,[4,5,6] ,[7,8,9])

那就是结果会是这样的

121.521.6666721.7521.821.8333321.8571421.87521.888892

对于结果的第一个矩阵,我想计算的方法如下:

1 / 12 / 13 / 24 / 25 / 36 / 3

我试过了

沿轴(np.divide,1,a,b)应用

但是上面说

操作数不能与形状(10,)(10,10,2)一起广播

有什么建议吗? 提前谢谢你]

Ps. 代码是

A%"21b

这意味着"将每个矩阵(2)从 a 除以每行(1)从 b"

或者只是简单的

A% b
1 个回复 | 最后更新于 2019-05-12
2019-05-12   #1

广播工程,如果拖尾尺寸匹配或是一! 所以我们基本上可以添加一个虚拟维度!

输入 numpy 为 np。 重塑(3,3,2)。 重塑(3,3) b [ ... ,np.newaxis ] # 这在最后增加了新的虚拟维数,b 的新形状是(3,3,1) a / b 数组([1。 2. ] 1.5,2 [1.66666667,2] [1.75,2] 1.8,2 ,[1.8333333,2] ,[1.85714286,2. ] 1.875,2 ,[1.88888889,2]])

登录后方可回帖

Loading...