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

标签 python numpy

2.765334406984874427e+00
3.309563282821381680e+00

文件如上所示:2 行,1 列 numpy.loadtxt() 返回

[ 2.76533441  3.30956328]

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

最佳答案

您始终可以使用 reshape 命令。单列文本文件作为一维数组加载,在 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.]])

您可以使用维数来检查这一点。

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 将始终将其加载为一维数组。这更像是 numpy 数组的一个特性,而不是我认为的一个错误。

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

相关文章:

python - ValueError:无法处理 Python/MySQL 中的参数

python - NumPy 的 : How to convert an array type quickly

python - 如何减少 Scikit-Learn Vectorizers 的内存使用量?

python - 使用 SWIG 在 C 中操作 Numpy 数组

python - 带条件的 Pandas DF 中的一系列算术 - 先前的操作被覆盖

python - 如何使用selenium将值输入到文本框中?

python - 为装饰器添加位置参数

python - 尝试 unpickle 列表时出现 KeyError

python - 剥离 HTML 标签以获取 python 中的字符串

python - 使用 Numpy 在 Python 中处理图像