2.765334406984874427e+00
3.309563282821381680e+00
ファイルは上記のようになります: 2 行、1 列 numpy.loadtxt() が返す
[ 2.76533441 3.30956328]
この場合、array.transpose() を使用するように言わないでください。本当の解決策が必要です。前もって感謝します!!
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 配列の機能です。
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
入力が列ベクトルの場合、列ベクトルを返します。行ベクトルの場合、行ベクトルを提供します。