改变从文本文件读取的numpy数组形状

1 投票
3 回答
1809 浏览
提问于 2025-04-18 14:30

我正在使用Python,加载一个文本文件,内容大概是这样的:

3    4

5    6

7    8

9    10

我用np.loadtxt('filename.txt')这个命令,得到的结果是一个数组,像这样:

([[3, 4]
  [5, 6]
  [7, 8]
  [9, 10]])

不过,我想要的数组应该是这样的:

([3, 5, 7, 9], [4, 6, 8, 10])

有没有人知道除了手动复制数组并重新格式化之外,我还能做些什么?我尝试过几种方法,但都不奏效。

3 个回答

0

最好的方法是使用 transpose 这个方法,具体用法如下:

import numpy as np

load_textdata = np.loadtxt('filename.txt')
data = np.transpose(load_textdata)
0

你可以使用 np.loadtxtunpack 选项:

np.loadtxt('filename.txt', unpack=True) 

这样你就可以直接得到转置后的数组了。(http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html)

另一种方法是使用 transpose 函数来处理你的 numpy 数组:

your_array = np.loadtxt('filename.txt')
print(your_array)
([[3, 4]
 [5, 6]
 [7, 8]
 [9, 10]])

new_array = your_array.T
print(new_array)
([3, 5, 7, 9], [4, 6, 8, 10])

transpose 方法会返回一个转置后的数组,而不是在原地进行转置。

1

根据我的评论:

>>> x
array([[ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10]])
>>> numpy.transpose(x)
array([[ 3,  5,  7,  9],
       [ 4,  6,  8, 10]])

撰写回答