Numpy 数组和轴

卡德尔

我有一个A具有形状的数组和具有形状的(2, n)第二个数组B(n, 2)我想通过将第一个数组第二个数组相乘来创建一个C具有该形状(n, 2, 2)axis=0数组A以接收存储在数组中的形状的 10 个“数组”axis=1B(2, 2)C

我不知道该怎么做...希望有人可以提供帮助,提前致谢!

这里有一些 n=10 的测试数据:

A = [array([1, 2, 3, 4, 4, 4, 4, 4, 4, 2]), array([2, 3, 2, 4, 3, 6, 8, 5, 2, 1])]
B = [array([1, 2]), array([3, 2]), array([1, 1]), array([2, 2]), array([6, 1]), array([4, 5]), array([1, 2]), array([1, 2]), array([1, 2]), array([1, 2])]
疯狂的物理学家

您可以使用moveaxis更改阵列形状以对齐,然后根据需要插入附加轴:

C = np.moveaxis(A, 1, 0)[..., None] * B[:, None, ...]

另一种方法是在乘法之后应用它,但这会冒着创建非连续内存布局的风险,因此通常不太理想:

C = np.moveaxis(A[..., None] * B[None, ...], 1, 0)

使用transpose可以获得类似的结果swapaxes

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章