首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转置一维NumPy数组

转置一维NumPy数组
EN

Stack Overflow用户
提问于 2011-05-11 02:24:30
回答 17查看 464.6K关注 0票数 240

我使用Python和NumPy,在“转置”方面有一些问题:

代码语言:javascript
运行
复制
import numpy as np
a = np.array([5,4])
print(a)
print(a.T)

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

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2011-05-11 02:36:44

它完全按照它应该的方式工作。一维数组的转置仍然是一维数组!(如果你习惯于matlab,它根本就没有一维数组的概念。Matlab的“一维”数组是二维的。)

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

代码语言:javascript
运行
复制
import numpy as np
a = np.array([5,4])[np.newaxis]
print(a)
print(a.T)

一般来说,你永远不需要担心这一点。如果你只是出于习惯,添加额外的维度通常不是你想要的。在进行各种计算时,Numpy会自动广播一维阵列。通常不需要区分行向量和列向量(它们都不是向量。它们都是2D的!)当你只想要一个向量的时候。

票数 280
EN

Stack Overflow用户

发布于 2012-05-11 14:12:55

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

代码语言:javascript
运行
复制
import numpy as np    
a = np.array([[5, 4]])
a.T

更详细的示例:

代码语言:javascript
运行
复制
>>> 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方法查看这里发生了什么:

代码语言:javascript
运行
复制
>>> b = np.array([10,20,30])
>>> b.shape
(3,)
>>> b = np.array([[10,20,30]])
>>> b.shape
(1, 3)
票数 163
EN

Stack Overflow用户

发布于 2016-04-04 22:58:10

适用于一维阵列的

代码语言:javascript
运行
复制
a = np.array([1, 2, 3, 4])
a = a.reshape((-1, 1)) # <--- THIS IS IT

print a
array([[1],
       [2],
       [3],
       [4]])

一旦您理解了-1在这里的意思是“需要多少行就行多少”,我发现这是最易读的“转置”数组的方法。如果您的数组是高维的,则只需使用a.T

票数 102
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5954603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档