我使用 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 许可协议
使用两对支架而不是一对。这将创建一个可以转置的二维数组,这与使用一对括号创建的一维数组不同。
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 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答974 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
它完全按照预期工作。一 维 数组的转置仍然是一 维 数组! (如果你习惯了 matlab,它基本上没有一维数组的概念。Matlab 的“一维”数组是二维的。)
如果你想把你的一维向量变成一个二维数组然后转置它,只需用
np.newaxis
切片它(或None
,它们是一样的,newaxis
只是更具可读性)。不过一般来说,您永远不需要担心这一点。添加额外维度通常不是您想要的,如果您只是出于习惯这样做的话。 Numpy 在进行各种计算时会自动广播一个一维数组。当您只需要一个向量时,通常不需要区分行向量和列向量(两者都不是 _向量_。它们都是二维的!)。