2.765334406984874427e+00
3.309563282821381680e+00

The file looks like above: 2 rows, 1 col
numpy.loadtxt()返回
[ 2.76533441  3.30956328]

请不要告诉我使用array.transpose()在这种情况下,我需要一个真正的解决方案。提前谢谢你!!

最佳答案

始终可以使用“重塑”命令。。

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

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

。这更多的是numpy数组的特性,而不是我认为的bug。

关于python - numpy,一个2行1列的文件,loadtxt()返回1行2列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16837946/

10-12 18:44