关于如何在python中转置单列数据的问题

时间:2015-09-11 11:07:03

标签: python numpy transpose

我创建了一个名为'column.txt'的文本文件,其中包含以下数据:

1
2
3
4
9
8

然后我编写了下面的代码,将我的数据转换为单行文本文件。

import numpy as np
x=np.loadtxt('column.txt')
z=x.T 
y=x.transpose()
np.savetxt('row.txt',y, fmt='%i') 

我尝试了两种不同的方法 - 使用矩阵乘法(我的代码中的注释行)和使用转置命令。问题是输出与输入完全相同!

之后,我在输入文件中添加了另一列,运行代码,这次输出完全没问题(输出包含两行!)

所以我的问题是:

有没有将单个列文件转换为单行文件?如果是的话,你能描述一下吗?

3 个答案:

答案 0 :(得分:2)

如果输入数据只包含一列,np.loadtxt()将返回一维数组。转置基本上意味着颠倒轴的顺序。对于只有一个轴的一维数组,这是一个无操作。您可以通过多种不同的方式将数组转换为二维数组,并且转置将按预期用于二维数组,例如

x = np.atleast_2d(np.loadtxt('column.txt'))

答案 1 :(得分:2)

您可以使用numpy.reshape转置数据并更改数组的形状,如下所示:

>>> import numpy as np
>>> arr=np.loadtxt('column.txt')
>>> arr
array([ 1.,  2.,  3.,  4.,  9.,  8.])
>>> arr.shape
(6,)
>>> arr=arr.reshape(6,1)
>>> arr
array([[ 1.],
       [ 2.],
       [ 3.],
       [ 4.],
       [ 9.],
       [ 8.]])

或者您可以将数组维度的编号作为numpy.loadtxt函数

的输入
>>> np.loadtxt('column.txt', ndmin=2)
array([[ 1.],
       [ 2.],
       [ 3.],
       [ 4.],
       [ 9.],
       [ 8.]])

但是,如果您想将单个列转换为单个行并将其写入文件,则需要执行以下操作

>>> parr=arr.reshape(1,len(arr))
np.savetxt('column.txt',parr, fmt='%i')

答案 2 :(得分:1)

这是因为1D阵列的转置与其自身相同,因为没有其他维度可以转置。

您可以尝试添加第二维,

>>> import numpy as np    
>>> x = np.array([[1], [2], [3], [4], [9], [8]])
>>> x.T
array([[1, 2, 3, 4, 9, 8]])