2
2.765334406984874427e+00
3.309563282821381680e+00

ファイルは上記のようになります: 2 行、1 列 numpy.loadtxt() が返す

[ 2.76533441  3.30956328]

この場合、array.transpose() を使用するように言わないでください。本当の解決策が必要です。前もって感謝します!!

4

4 に答える 4

7

reshape コマンドはいつでも使用できます。1 列のテキスト ファイルは、numpy の場合は行ベクトルである 1D 配列として読み込まれます。

>>> 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.]])

これは、次元数を使用して確認できます。

data=np.loadtxt('data.npz')
if data.ndim==1: data=data[:,None]

または

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

指摘する価値はありますが、常にデータの列がある場合、numpy は常にそれを 1D 配列としてロードします。これは、私が信じているバグではなく、numpy 配列の機能です。

于 2013-05-30T13:46:46.917 に答える
2

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

入力が列ベクトルの場合、列ベクトルを返します。行ベクトルの場合、行ベクトルを提供します。

于 2013-05-30T14:00:00.193 に答える