Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Numpy加载大数据文件?_Python_Arrays_Numpy - Fatal编程技术网

Python 使用Numpy加载大数据文件?

Python 使用Numpy加载大数据文件?,python,arrays,numpy,Python,Arrays,Numpy,我正试图加载一个大数组,作为一个小项目的一部分,我正在从.dat进行工作 我通常使用numpy.loadtxt从我的文件中读取数据,形成单列数组,如果我的文件是: 1 2 3 1 2 3 1 2 3 我使用的地方: x, y, z = np.loadtxt("123.dat", Unpack =True) 将3列指定给数组1、2和3。我正在处理的文件具有以下格式 0000000000 4.975124E-03 -3.046211E+00 -1.148806E+00 0000000001 2.

我正试图加载一个大数组,作为一个小项目的一部分,我正在从.dat进行工作

我通常使用numpy.loadtxt从我的文件中读取数据,形成单列数组,如果我的文件是:

1 2 3
1 2 3
1 2 3
我使用的地方:

x, y, z = np.loadtxt("123.dat", Unpack =True)
将3列指定给数组1、2和3。我正在处理的文件具有以下格式

0000000000 4.975124E-03 -3.046211E+00 -1.148806E+00
0000000001 2.543665E-06 -3.661235E+00 -1.038111E+00
0000000002 2.543665E-06 -1.285855E+01 1.251881E+00
这种格式在我的文件中重复大约52k行。 然而,当我尝试使用相同的方法并尝试使用以下方法时

i, m, x, y = np.loadtxt("stars.dat", unpack=True)
我得到以下错误

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    i, m, x, y = np.loadtxt("stars.dat")
ValueError: too many values to unpack (expected 4)
回溯(最近一次呼叫最后一次):
文件“test.py”,第4行,在
i、 m,x,y=np.loadtxt(“stars.dat”)
ValueError:要解压缩的值太多(应为4个)
我已经尝试将参数更改为usecols=(1,2…),但是这无法将值正确收集到矩阵中,它会从我的文件中选择随机值,这些值在列中没有对齐


如何解决此错误?使用Numpy从文件导入大型数据集并在将来将其分配给数组的正确方法是什么?

您的示例应按预期解压为4个变量。那个文件一定有什么不一样的地方。错误表明它正在查找超过4列。
usecols
的问题进一步表明,文件中列的概念与
loadtxt
看到的不同。可能是分隔符有问题

您的样品:

In [114]: txt=b"""0000000000 4.975124E-03 -3.046211E+00 -1.148806E+00
     ...: 0000000001 2.543665E-06 -3.661235E+00 -1.038111E+00
     ...: 0000000002 2.543665E-06 -1.285855E+01 1.251881E+00"""

In [119]: data=np.loadtxt(txt.splitlines())
In [120]: data.shape
Out[120]: (3, 4)
In [121]: data.dtype
Out[121]: dtype('float64')
普通加载可以找到3行4列。这样做一个简单的加载以确保正确读取文件是一个好主意

unpack
只需转置数组:

In [122]: data=np.loadtxt(txt.splitlines(), unpack=True)
In [123]: data.shape
Out[123]: (4, 3)
In [124]: i,j,k,l=data
之后可以打开包装。解包是Python对变量元组的常规赋值。除了转置之外,
loadtxt
unpack
没有任何特殊功能