python单列数据转置问题
Problems on how to transpose single column data in python
我创建了一个名为 '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')
我尝试了两种不同的方法——使用矩阵乘法(我代码中的注释行)和使用 t运行spose 命令。问题是输出和输入完全一样!
之后,我在输入文件中添加了另一列,运行 代码,令人惊讶的是这次输出完全没问题(输出包含两行!)
所以我的问题是:
有没有办法将单列文件设置为单行文件?运行如果是,你能描述一下怎么做吗?
如果您的输入数据仅包含一列,np.loadtxt()
将 return 一个一维数组。转置基本上意味着颠倒轴的顺序。对于只有一个轴的一维数组,这是一个空操作。您可以通过许多不同的方式将数组转换为二维数组,并且转置将按预期对二维数组工作,例如
x = np.atleast_2d(np.loadtxt('column.txt'))
这是因为一维数组的转置与其本身相同,因为没有其他维度可以转置。
您可以尝试通过这样做添加第二个维度,
>>> import numpy as np
>>> x = np.array([[1], [2], [3], [4], [9], [8]])
>>> x.T
array([[1, 2, 3, 4, 9, 8]])
您可以使用 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')
我创建了一个名为 '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')
我尝试了两种不同的方法——使用矩阵乘法(我代码中的注释行)和使用 t运行spose 命令。问题是输出和输入完全一样!
之后,我在输入文件中添加了另一列,运行 代码,令人惊讶的是这次输出完全没问题(输出包含两行!)
所以我的问题是:
有没有办法将单列文件设置为单行文件?运行如果是,你能描述一下怎么做吗?
如果您的输入数据仅包含一列,np.loadtxt()
将 return 一个一维数组。转置基本上意味着颠倒轴的顺序。对于只有一个轴的一维数组,这是一个空操作。您可以通过许多不同的方式将数组转换为二维数组,并且转置将按预期对二维数组工作,例如
x = np.atleast_2d(np.loadtxt('column.txt'))
这是因为一维数组的转置与其本身相同,因为没有其他维度可以转置。
您可以尝试通过这样做添加第二个维度,
>>> import numpy as np
>>> x = np.array([[1], [2], [3], [4], [9], [8]])
>>> x.T
array([[1, 2, 3, 4, 9, 8]])
您可以使用 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')