我認爲,關鍵是要reshape(-1, nbcols)
你np.genfromtxt
得到什麼,所以你的任務應該是這樣的:
a[:, ind:ind + nbcols] = np.genfromtxt('file_1000x10.csv',
usecols = range(nbcols)).reshape(-1, nbcols)
在一個單獨的說明,遍歷ind
,並讀取一個文件每次都是不必要的。你可以做更高的維度巫術的一點點如下:
import numpy as np
from StringIO import StringIO
def make_data(rows, cols) :
data = ((str(k + cols * j) for k in xrange(cols)) for j in xrange(rows))
data = '\n'.join(map(lambda x: ' '.join(x), data))
return StringIO(data)
def read_data(f, rows, cols, nbcols) :
a = np.zeros((rows, (cols + nbcols - 1) // nbcols, nbcols))
a[...] = np.genfromtxt(f, usecols=range(nbcols)).reshape(-1, 1, nbcols)
return a.reshape(rows, -1)[:, :cols]
>>> read_data(make_data(3, 6), 3, 6, 2)
array([[ 0., 1., 0., 1., 0., 1.],
[ 6., 7., 6., 7., 6., 7.],
[ 12., 13., 12., 13., 12., 13.]])
>>> read_data(make_data(3, 6), 3, 6, 1)
array([[ 0., 0., 0., 0., 0., 0.],
[ 6., 6., 6., 6., 6., 6.],
[ 12., 12., 12., 12., 12., 12.]])
>>> read_data(make_data(3, 6), 3, 6, 4)
array([[ 0., 1., 2., 3., 0., 1.],
[ 6., 7., 8., 9., 6., 7.],
[ 12., 13., 14., 15., 12., 13.]])
原來的答案 可以使用添加尺寸1的額外維度your_array
:
your_array.reshape(your_array.shape + (1,))
或相當於
your_array.reshape(-1, 1)
這也可以用
或等值
your_array[..., None]
您對重塑的建議是一個很好的解決方案。 – user1850133