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')