在Python中导入数组

14 投票
5 回答
107407 浏览
提问于 2025-04-15 16:22

我该怎么把一个数组从文件导入到Python(使用numpy.array),而且如果文件不存在的话,还要先创建这个文件。

举个例子,就是把一个矩阵保存到文件里,然后再把它加载回来。

5 个回答

1

(我知道这个问题比较老,但我觉得这对有类似问题的人来说可能会有帮助)

如果你想从一个ASCII/文本文件中加载数据(这种文件的好处是比较容易被人看懂,也方便在其他软件中解析),那么你可以使用numpy.loadtxt:

如果你只是想快速地把numpy数组或矩阵保存到文件中,或者从文件中加载出来,可以看看numpy.save和numpy.load:

10

另一个选择是 numpy.genfromtxt,比如:

import numpy as np
data = np.genfromtxt("myfile.dat",delimiter=",")

这样做会让 data 变成一个numpy数组,行数和列数会和你文件里的数据一样多。

24

可以看看这个关于 numpy 示例列表 的条目。这里是关于 .loadtxt() 的内容。

>>> from numpy import *
>>>
>>> data = loadtxt("myfile.txt")                       # myfile.txt contains 4 columns of numbers
>>> t,z = data[:,0], data[:,3]                         # data is 2D numpy array
>>>
>>> t,x,y,z = loadtxt("myfile.txt", unpack=True)                  # to unpack all columns
>>> t,z = loadtxt("myfile.txt", usecols = (0,3), unpack=True)     # to select just a few columns
>>> data = loadtxt("myfile.txt", skiprows = 7)                    # to skip 7 rows from top of file
>>> data = loadtxt("myfile.txt", comments = '!')                  # use '!' as comment char instead of '#'
>>> data = loadtxt("myfile.txt", delimiter=';')                   # use ';' as column separator instead of whitespace
>>> data = loadtxt("myfile.txt", dtype = int)                     # file contains integers instead of floats

撰写回答