Numpy,一个2行1列的文件,loadtxt()返回1行2列

2024-04-25 20:42:29 发布

您现在位置:Python中文网/ 问答频道 /正文

2.765334406984874427e+00
3.309563282821381680e+00

文件如下所示:2行,1列 numpy.loadtxt文件()退货

^{pr2}$

请不要告诉我用途数组.转置()在这种情况下,我需要一个真正的解决办法。提前谢谢你!!在


Tags: 文件numpy情况数组用途pr2解决办法loadtxt
3条回答

您可能需要使用csv模块:

import csv
import numpy as np

reader = csv.reader( open('file.txt') )
l = list(reader)
a = np.array(l)

a.shape
>>> (2,1)

这样,无论文件中有多少行/列,您都将获得正确的数组维度。在

如果愿意,可以使用matrix来读取字符串。让test.txt包含内容。以下是您需要的功能:

import numpy as np

def my_loadtxt(filename):
    return np.array(np.matrix(open(filename).read().strip().replace('\n', ';')))

a = my_loadtxt('test.txt')
print a

如果输入是列向量,它将给出列向量。对于行向量,它给出行向量。在

始终可以使用“重塑形状”命令。单列文本文件作为1D数组加载,在numpy的例子中是一个行向量。在

>>> a
array([ 2.76533441,  3.30956328])

>>> a[:,None]
array([[ 2.76533441],
       [ 3.30956328]])

>>> b=np.arange(5)[:,None]
>>> b
array([[0],
       [1],
       [2],
       [3],
       [4]])
>>> np.savetxt('something.npz',b)
>>> np.loadtxt('something.npz')
array([ 0.,  1.,  2.,  3.,  4.])
>>> np.loadtxt('something.npz').reshape(-1,1) #Another way of doing it
array([[ 0.],
       [ 1.],
       [ 2.],
       [ 3.],
       [ 4.]])

您可以使用维度的数量进行检查。在

^{pr2}$

或者

np.loadtxt('something.npz',ndmin=2) #Always gives at at least a 2D array.

如果你总是有一个数组,那么它的数据总是值得的。这更像是numpy数组的一个特性,而不是我认为的bug。在

相关问题 更多 >