在Python中,与Matlab中的permute(A, [3 2 1])等效的操作是什么?

9
如果A是一个2x2的数组,在Python中,与MATLAB中permute(A, [3 2 1])等价的表达式是什么?
谢谢。

假设 A 是一个形状为 (2,2)numpy 数组。 - Shai
2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - mgilson
1个回答

12
您正在寻找 numpy.transpose
np.transpose( np.expand_dims(A, axis=2), (2, 1, 0) )

由于 numpy 默认不保留单一维度,您需要使用 np.expand_dims 明确地添加它。

否则,np.expand_dims(A, axis=2) 的简写是 A[:, :, None]

np.transpose(A[:, :, None], (2,1,0))

上述语句因A是2x2的数组而报错。例如,A = np.array([[1,2],[3,4]]). - user4279562
然后,np.transpose(a,(2,1,0))会出现以下错误信息:--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-3-c92b9f20f522> in <module>() ----> 1 np.transpose(a,(2,1,0))/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/fromnumeric.pyc in transpose(a, axes) 535 except AttributeError: 536 return _wrapit(a, 'transpose', axes) --> 537 return transpose(axes)ValueError: 轴与数组不匹配 - user4279562
在Matlab中,上述命令会生成一个1x2x2的矩阵,其中a[:,:,1] = 1 2,a[:,:,2] = 3 4。我该如何在Python中实现相同的结果? - user4279562
1
是的,你说得对!缺少这个维度一直困扰着我,现在我很高兴知道了解决方法。 - user4279562
不错!我在想你会如何使用 numpy 来实现这个。谢谢,Shai! - rayryeng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接