Numpy transpose not giving expected result
我正在尝试为转置方法在Python scipy模块中使用一个非常基本的示例,但未给出预期的结果。 我在pylab模式下使用Ipython。
1 2 3 4 5 6 | a = array([1,2,3] print a.shape >> (3,) b = a.transpose() print b.shape >> (3,) |
如果我打印数组" a"和" b"的内容,它们是相似的。
期望是:(这将导致Matlab om转置)
1 2 3 | [1, 2, 3] |
转置是一维数组的基本操作。
添加新轴并转置:
1 2 3 4 5 6 | >>> a[None].T array([[1], [2], [3]]) >>> np.newaxis is None True |
或重塑:
1 2 3 4 | >>> a.reshape(a.shape+(1,)) array([[1], [2], [3]]) |
或按照@Sven Marnach在评论中的建议,在末尾添加新轴:
1 2 3 4 | >>> a[:,None] array([[1], [2], [3]]) |
NumPy的
在NumPy中,数组
1 | array([1, 2, 3]) |
和
1 2 3 | array([1, 2, 3]) |
实际上是相同的–它们只是空白不同。您可能想要的是相应的二维数组,对于
1 2 3 4 5 6 7 8 | 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时,您可能更喜欢使用
将1D数组整形为2D数组的更简洁的方法是:
1 | a = np.array([1,2,3]), a_2d = a.reshape((1,-1)) or a_2d = a.reshape((-1,1)) |
形状向量中的-1表示"填写任何数字即可完成此工作"
您应该尝试: