我尝试了一个非常基本的例子在Python scipy模块中的transpose()方法,但它没有给出预期的结果。我使用的是pylab模式下的ipython。
transpose()
a = array([1,2,3] print a.shape >> (3,) b = a.transpose() print b.shape >> (3,)
如果我打印数组“a”和“B”的内容,它们是相似的。期望是:(这将导致在转置Matlab)
[1, 2, 3]
bfhwhh0e1#
NumPy的transpose()有效地反转了数组的形状。如果数组是一维的,这意味着它没有效果。在NumPy中,数组
array([1, 2, 3])
和
实际上是一样的--它们只是在空白处有所不同。您可能需要的是对应的二维数组,transpose()可以很好地工作。还可以考虑使用NumPy的matrix类型:
matrix
In [1]: numpy.matrix([1, 2, 3]) Out[1]: matrix([[1, 2, 3]]) In [2]: numpy.matrix([1, 2, 3]).T Out[2]: matrix([[1], [2], [3]])
请注意,对于大多数应用程序,普通的一维数组可以很好地用作行或列向量,但当来自Matlab时,您可能更喜欢使用numpy.matrix。
numpy.matrix
pgx2nnw82#
转置是一维数组的noop。添加新轴并转置:
>>> a[None].T array([[1], [2], [3]]) >>> np.newaxis is None True
或重塑:
>>> a.reshape(a.shape+(1,)) array([[1], [2], [3]])
或者正如@Sven Marnach在评论中建议的那样,在末尾添加新的轴:
>>> a[:,None] array([[1], [2], [3]])
bmp9r5qi3#
将1D数组整形为2D数组的一种更简洁的方法是:
a = np.array([1,2,3]), a_2d = a.reshape((1,-1)) or a_2d = a.reshape((-1,1))
形状向量中的-1表示“填充任何使其工作的数字”
k4emjkb14#
你应该尝试:a = array([[1,2,3]])或a = array([[1],[2],[3]]),即a应该是矩阵(行向量,列向量)。
a = array([[1,2,3]])
a = array([[1],[2],[3]])
a
2wnc66cl5#
试着把它们放在另一个括号里。它不再是严格的“1D”,因为Numpy现在认为可编辑数组的第一行(某种程度上)。
import numpy a = numpy.array([[1, 2, 3]]) print(numpy.transpose(a)) >> [[1] [2] [3]]
5条答案
按热度按时间bfhwhh0e1#
NumPy的
transpose()
有效地反转了数组的形状。如果数组是一维的,这意味着它没有效果。在NumPy中,数组
和
实际上是一样的--它们只是在空白处有所不同。您可能需要的是对应的二维数组,
transpose()
可以很好地工作。还可以考虑使用NumPy的matrix
类型:请注意,对于大多数应用程序,普通的一维数组可以很好地用作行或列向量,但当来自Matlab时,您可能更喜欢使用
numpy.matrix
。pgx2nnw82#
转置是一维数组的noop。
添加新轴并转置:
或重塑:
或者正如@Sven Marnach在评论中建议的那样,在末尾添加新的轴:
bmp9r5qi3#
将1D数组整形为2D数组的一种更简洁的方法是:
形状向量中的-1表示“填充任何使其工作的数字”
k4emjkb14#
你应该尝试:
a = array([[1,2,3]])
或a = array([[1],[2],[3]])
,即a
应该是矩阵(行向量,列向量)。2wnc66cl5#
试着把它们放在另一个括号里。它不再是严格的“1D”,因为Numpy现在认为可编辑数组的第一行(某种程度上)。