转置一维 NumPy 数组

新手上路,请多包涵

我使用 Python 和 NumPy,但在“转置”方面遇到了一些问题:

 import numpy as np
a = np.array([5,4])
print(a)
print(a.T)

调用 a.T 不是转置数组。如果 a 例如 [[],[]] 那么它会正确转置,但我需要 [...,...,...] 的转置。

原文由 thaking 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 627
2 个回答

它完全按照预期工作。一 数组的转置仍然是一 数组! (如果你习惯了 matlab,它基本上没有一维数组的概念。Matlab 的“一维”数组是二维的。)

如果你想把你的一维向量变成一个二维数组然后转置它,只需用 np.newaxis 切片它(或 None ,它们是一样的, newaxis 只是更具可读性)。

 import numpy as np
a = np.array([5,4])[np.newaxis]
print(a)
print(a.T)

不过一般来说,您永远不需要担心这一点。添加额外维度通常不是您想要的,如果您只是出于习惯这样做的话。 Numpy 在进行各种计算时会自动广播一个一维数组。当您只需要一个向量时,通常不需要区分行向量和列向量(两者都不是 _向量_。它们都是二维的!)。

原文由 Joe Kington 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用两对支架而不是一对。这将创建一个可以转置的二维数组,这与使用一对括号创建的一维数组不同。

 import numpy as np
a = np.array([[5, 4]])
a.T

更彻底的例子:

 >>> a = [3,6,9]
>>> b = np.array(a)
>>> b.T
array([3, 6, 9])         #Here it didn't transpose because 'a' is 1 dimensional
>>> b = np.array([a])
>>> b.T
array([[3],              #Here it did transpose because a is 2 dimensional
       [6],
       [9]])

使用 numpy 的 shape 方法看看这里发生了什么:

 >>> b = np.array([10,20,30])
>>> b.shape
(3,)
>>> b = np.array([[10,20,30]])
>>> b.shape
(1, 3)

原文由 savagent 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏