-
上一篇中我们简要带过了Numpy的数据持久化,在这一篇中将要具体说明Numpy提供的文件存取功能。Numpy可以将数组保存至二进制文件、文本文件,同时支持将多个数组保存至一个文件中。
1. np.tofile() & np.fromfile()
01.
import
numpy as np
02.
import
os
03.
04.
os.chdir(
"d:\\"
)
05.
a = np.arange(
0
,
12
)
06.
a.reshape(
3
,
4
)
07.
array([[
0
,
1
,
2
,
3
],
08.
[
4
,
5
,
6
,
7
],
09.
[
8
,
9
,
10
,
11
]])
10.
11.
a.tofile(
"a.bin"
) #保存至a.bin
12.
13.
b = np.fromfile(
"a.bin"
, dtype=np.int32) #从文件中加载数组,错误的dtype会导致错误的结果
14.
array([
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
])
15.
16.
b.reshape(
3
,
4
)
17.
array([[
0
,
1
,
2
,
3
],
18.
[
4
,
5
,
6
,
7
],
19.
[
8
,
9
,
10
,
11
]])
20.
#读取的数据将为一维数组,需要使用reshape改变其数组结构
2. np.save() & np.load() & np.savez()
load()和save()用Numpy专用的二进制格式保存数据,它们会自动处理元素类型和形状等信息。savez()提供了将多个数组存储至一个文件的能力,调用load()方法返回的对象,可以使用数组名对各个数组进行读取。默认数组名arr_0,arr_1,arr_2......
1.
np.save(
"a.npy"
, a.reshape(
3
,
4
))
2.
c = np.load(
"a.npy"
)
3.
c
4.
array([[
0
,
1
,
2
,
3
],
5.
[
4
,
5
,
6
,
7
],
6.
[
8
,
9
,
10
,
11
]])
多个数组存储至一个文件:01.
a = np.array([[
1
,
2
,
3
],[
4
,
5
,
6
]])
02.
b = np.arange(
0
,
1.0
,
0.1
)
03.
c = np.sin(b)
04.
np.savez(
"result.npz"
, a, b, sin_arr=c) #使用sin_arr命名数组c
05.
r = np.load(
"result.npz"
) #加载一次即可
06.
r[
"arr_0"
]
07.
array([[
1
,
2
,
3
],
08.
[
4
,
5
,
6
]])
09.
r[
"arr_1"
]
10.
array([
0
. ,
0.1
,
0.2
,
0.3
,
0.4
,
0.5
,
0.6
,
0.7
,
0.8
,
0.9
])
11.
r[
"sin_arr"
]
12.
array([
0
. ,
0.09983342
,
0.19866933
,
0.29552021
,
0.38941834
,
13.
0.47942554
,
0.56464247
,
0.64421769
,
0.71735609
,
0.78332691
])
可以使用解压软件解压缩.npz文件会得到存储的各个数组对应的.npy文件以便进行遍历。
3. savetxt() & loadtxt()
01.
a = np.arange(
0
,
12
,
0.5
).reshape(
4
,-
1
)
02.
a
03.
array([[
0
. ,
0.5
,
1
. ,
1.5
,
2
. ,
2.5
],
04.
[
3
. ,
3.5
,
4
. ,
4.5
,
5
. ,
5.5
],
05.
[
6
. ,
6.5
,
7
. ,
7.5
,
8
. ,
8.5
],
06.
[
9
. ,
9.5
,
10
. ,
10.5
,
11
. ,
11.5
]])
07.
np.savetxt(
"a.txt"
, a)
08.
np.loadtxt(
"a.txt"
)
09.
array([[
0
. ,
0.5
,
1
. ,
1.5
,
2
. ,
2.5
],
10.
[
3
. ,
3.5
,
4
. ,
4.5
,
5
. ,
5.5
],
11.
[
6
. ,
6.5
,
7
. ,
7.5
,
8
. ,
8.5
],
12.
[
9
. ,
9.5
,
10
. ,
10.5
,
11
. ,
11.5
]])
13.
np.savetxt(
"a.txt"
, a, fmt=
"%d"
, delimiter=
","
) #指定存储数据类型为整型,分隔符为,
14.
np.loadtxt(
"a.txt"
, delimiter=
','
) #以,分隔符读取
15.
array([[
0
.,
0
.,
1
.,
1
.,
2
.,
2
.],
16.
[
3
.,
3
.,
4
.,
4
.,
5
.,
5
.],
17.
[
6
.,
6
.,
7
.,
7
.,
8
.,
8
.],
18.
[
9
.,
9
.,
10
.,
10
.,
11
.,
11
.]])
Numpy之文件存取
最新推荐文章于 2024-01-05 13:00:38 发布