biancheng-NumPy教程

目录http://c.biancheng.net/numpy/

1NumPy是什么
2NumPy下载与安装
3NumPy ndarray对象
4NumPy数据类型
5NumPy数组属性
6Numpy创建数组
7NumPy创建区间数组
8Numpy索引和切片
9NumPy高级索引
10NumPy广播机制
11NumPy遍历数组
12NumPy相关数组操作
13NumPy数组元素增删改查
14NumPy位运算
15NumPy字符串处理函数
16NumPy数学函数
17NumPy算术运算
18NumPy统计函数
19NumPy排序和搜索功能
20NumPy副本和视图
21NumPy字节交换
22NumPy Matrix矩阵库
23NumPy线性代数
24NumPy矩阵乘法
25NumPy和Matplotlib绘图
26NumPy IO操作

NumPy 的全称是“ Numeric Python”,它是 Python 的第三方扩展包,主要用来计算、处理一维或多维数组。

在数组算术计算方面, NumPy 提供了大量的数学函数。NumPy 的底层主要用 C语言编写,因此它能够高速地执行数值计算。NumPy 还提供了多种数据结构,这些数据结构能够非常契合的应用在数组和矩阵的运算上。

NumPy图标


NumPy 的前身是 Numeric 程序包,该包由 Jim Hugunin 开发,在这之后,他还开发了另一个类似的的程序包 Numarray,相比前者而言 Numarray 具有更加全面的功能 。在 2005 年,Travis Oliphant 通过整合 Numarray 与 Numeric 软件包的功能,从而集成了 NumPy。NumPy 的最新版本 1.19.2 已于 2020 年 9 月10 日发布。

NumPy 作为一个开源项目,它由许多协作者共同开发维护,这也是 NumPy 的优势之一。

NumPy使用需求

随着数据科学(Data Science,简称 DS,包括大数据分析与处理、大数据存储、数据抓取等分支)的蓬勃发展,像 NumPy、SciPy(Python科学计算库)、Pandas(基于NumPy的数据处理库) 等数据分析库都有了大量的增长,它们都具有较简单的语法格式。

在矩阵乘法与数组形状处理上,NumPy 有着非常不错的性能,再加上 NumPy 的计算速度很快,这些都是 NumPy 成为一款数据分析工具的重要原因。

数组形状可以理解为数组的维度,比如一维数组、二维数组、三维数组等;以二维数组为例,改变数组形状就是交换数组的行和列,也即将数组旋转 90 度。

NumPy 可以很便捷高效地处理大量数据,那么使用 NumPy 做数据处理有哪些优点呢?总结如下:

  • NumPy 是 Python 科学计算基础库;
  • NumPy 可以对数组进行高效的数学运算;
  • NumPy 的 ndarray 对象可以用来构建多维数组;
  • NumPy 能够执行傅立叶变换与重塑多维数组形状;
  • NumPy 提供了线性代数,以及随机数生成的内置函数。

NumPy应用场景

NumPy 通常与 SciPy(Python科学计算库)和 Matplotlib(Python绘图库)等软件包组合使用,这种组合方式被用来广泛地代替 MatLab 的使用。

MatLab 是一款强大的数学计算软件,广泛应用在数据分析、电子通信、深度学习、图像处理、机器视觉、量化金融等领域,但近些年随着 Python 语言的迅猛发展,Python 被看作是一种更适合代替  MatLab 的编程语言。您可以使用 NumPy、SciPy 与 Matplotlib 等 Python 工具包搭建科学计算环境,比如 Anaconda 就是是一个开源的 Python 发行版本,它包含了 Python 、NumPy 等 180 多个科学包及其依赖项。

因为 NumPy 是 Python 的扩展程序包,所以您在学习 NumPy 之前应该具备一些 Python 基础知识,这对本教程的学习将大有裨益。如果您想了解关于 NumPy 更多的知识可浏览 NumPy 官网(https://numpy.org/)。 

MacOSX系统安装

Mac 系统虽然自带包管理器Homebrew,但是它不能下载 NumPy 等科学计算包,所以需要使用下列方式安装:

$ pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

创建ndarray对象

通过 NumPy 的内置函数 array() 可以创建 ndarray 对象,其语法格式如下:

numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0)

下面表格对其参数做了说明:

参数说明
序号参数描述说明
1 object 表示一个数组序列。
2 dtype 可选参数,通过它可以更改数组的数据类型。
3 copy 可选参数,表示数组能否被复制,默认是 True。
4 order 以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)/F(列序列)/A(默认)。
5 ndim 用于指定数组的维度。


创建一维数组:

a=numpy.array([1,2,3])

示例代码:

  1. import numpy
  2. a=numpy.array([1,2,3])#使用列表构建一维数组
  3. print(a)
  4. [1 2 3]
  5. print(type(a))
  6. #ndarray数组类型
  7. <class 'numpy.ndarray'>

reshape数组变维

数组的形状指的是多维数组的行数和列数。Numpy 模块提供 reshape() 函数可以改变多维数组行数和列数,从而达到数组变维的目的。因此数组变维即对数组形状的重塑,如图1所示:

reshape() 函数可以接受一个元组作为参数,用于指定了新数组的行数和列数,示例如下:

  1. import numpy as np
  2. e = np.array([[1,2],[3,4],[5,6]])
  3. print("原数组",e)
  4. e=e.reshape(2,3)
  5. print("新数组",e)

NumPy数据类型

表1:NumPy数据类型
序号数据类型语言描述
1 bool_ 布尔型数据类型(True 或者 False)
2 int_ 默认整数类型,类似于 C 语言中的 long,取值为 int32 或 int64
3 intc 和 C 语言的 int 类型一样,一般是 int32 或 int 64
4 intp 用于索引的整数类型(类似于 C 的 ssize_t,通常为 int32 或 int64)
5 int8 代表与1字节相同的8位整数。值的范围是-128到127。
6 int16 代表 2 字节(16位)的整数。范围是-32768至32767。
7 int32 代表 4 字节(32位)整数。范围是-2147483648至2147483647。
8 int64 表示 8 字节(64位)整数。范围是-9223372036854775808至9223372036854775807。
9 uint8 代表1字节(8位)无符号整数。
10 uint16 2 字节(16位)无符号整数。
11 uint32 4 字节(32位)的无符号整数。
12 uint64 8 字节(64位)的无符号整数。
13 float_ float64 类型的简写。
14 float16 半精度浮点数,包括:1 个符号位,5 个指数位,10个尾数位。
15 float32 单精度浮点数,包括:1 个符号位,8 个指数位,23个尾数位。
16 float64 双精度浮点数,包括:1 个符号位,11 个指数位,52个尾数位。
17 complex_ 复数类型,与 complex128 类型相同。
18 complex64 表示实部和虚部共享 32 位的复数。
19 complex128 表示实部和虚部共享 64 位的复数。
20 str_ 表示字符串类型
21 string_ 表示字节串类型

数据类型对象

数据类型对象(Data Type Object)又称 dtype 对象,主要用来描述数组元素的数据类型、大小以及字节顺序。同时,它也可以用来创建结构化数据。比如常见的 int64、float32 都是 dtype 对象的实例,其语法格式如下:

np.dtype(object)

创建一个 dtype 对象可以使用下列方法:

a= np.dtype(np.int64)

示例:

  1. import numpy as np
  2. a= np.dtype(np.int64)
  3. print(a)

输出结果:

int64

数据类型标识码

NumPy 中每种数据类型都有一个唯一标识的字符码,如下所示:

数据类型标识码
字符对应类型
b 代表布尔型
i 带符号整型
u 无符号整型
f 浮点型
c 复数浮点型
m 时间间隔(timedelta)
M datatime(日期时间)
O Python对象
S,a 字节串(S)与字符串(a)
U Unicode
V 原始数据(void)


下面使用数据类型标识码,创建一组结构化数据:

  1. #创建数据类型score
  2. import numpy as np
  3. dt = np.dtype([('score','i1')])
  4. print(dt)

输出如下:

[('score', 'i1')]

将上述的数据类型对象 dt,应用到 ndarray 中:

  1. #定义字段名score,以及数组数据类型i1
  2. dt = np.dtype([('score','i1')])
  3. a = np.array([(55,),(75,),(85,)], dtype = dt)
  4. print(a)
  5. print(a.dtype)
  6. print(a['score'])

输出结果:

获取a数组:
[(55,) (75,) (85,)] 
数据类型对象dtype
dtype([('score', 'i1')])
获取'score'字段分数
[55 75 85]

定义结构化数据

通常情况下,结构化数据使用字段的形式来描述某个对象的特征。以下示例描述一位老师的姓名、年龄、工资的特征,该结构化数据其包含以下字段:

  • str 字段:name
  • int 字段:age
  • float 字段:salary


定义过程如下:

  1. import numpy as np
  2. teacher = np.dtype([('name','S20'), ('age', 'i1'), ('salary', 'f4')])
  3. #输出结构化数据teacher
  4. print(teacher)
  5. #将其应用于ndarray对象
  6. b = np.array([('ycs', 32, 6357.50),('jxe', 28, 6856.80)], dtype = teacher)
  7. print(b)

输出结果:

[('name', 'S20'), ('age', 'i1'), ('salary', '<f4')]
#输出的name为bytes字节串类型
[(b'ycs', 32, 6357.5) (b'jxe', 28, 6856.8)]

Numpy创建数组

numpy.empty()

numpy.empty() 创建未初始化的数组,可以指定创建数组的形状(shape)和数据类型(dtype),语法格式如下:

numpy.empty(shape, dtype = float, order = 'C')

它接受以下参数:

    • shape:指定数组的形状;
    • dtype:数组元素的数据类型,默认值是值 float;
    • order:指数组元素在计算机内存中的储存顺序,默认顺序是“C”(行优先顺序)。

使用示例如下:

  1. import numpy as np
  2. arr = np.empty((3,2), dtype = int)
  3. print(arr)

numpy.zeros()

该函数用来创建元素均为 0 的数组,同时还可以指定被数组的形状,语法格式如下:

numpy. zeros(shape,dtype=float,order="C")


参数说明
参数名称说明描述
shape 指定数组的形状大小。
dtype 可选项,数组的数据类型
order “C”代表以行顺序存储,“F”则表示以列顺序存储

示例如下:

  1. import numpy as np
  2. #默认数据类型为浮点数
  3. a=np.zeros(6)
  4. print(a)
  5. b=np.zeros(6,dtype="complex64" )
  6. print(b)

numpy.ones()

返回指定形状大小与数据类型的新数组,并且新数组中每项元素均用 1 填充,语法格式如下:

numpy.ones(shape, dtype = None, order = 'C')

示例如下:

  1. import numpy as np
  2. arr1 = np.ones((3,2), dtype = int)
  3. print(arr1)

输出结果如下:

 [[1 1] [1 1] [1 1]]

下面介绍如何使用 Python 列表、流对象、可迭代对象来创建一个 NumPy 数组。

numpy.asarray()

asarray() 与 array() 类似,但是它比 array() 更为简单。asarray() 能够将一个 Python 序列转化为 ndarray 对象,语法格式如下:

numpy.asarray(sequence,dtype = None ,order = None )

它接受下列参数:

  • sequence:接受一个 Python 序列,可以是列表或者元组;
  • dtype:可选参数,数组的数据类型;
  • order:数组内存布局样式,可以设置为 C 或者 F,默认是 C。


示例 1,将列表转化为 numpy 数组:

  1. import numpy as np
  2. l=[1,2,3,4,5,6,7]
  3. a = np.asarray(l);
  4. print(type(a))
  5. print(a)

1. numpy.arange()

在 NumPy 中,您可以使用 arange() 来创建给定数值范围的数组,语法格式如下:

numpy.arange(start, stop, step, dtype)

参数说明见下表:

参数描述
参数名称参数说明
start 起始值,默认是 0。
stop 终止值,注意生成的数组元素值不包含终止值。
step 步长,默认为 1。
dtype 可选参数,指定 ndarray 数组的数据类型。


根据startstop指定的范围以及step步长值,生成一个 ndarray 数组,示例如下。

  1. import numpy as np
  2. x = np.arange(8)
  3. print (x)

输出结果如下所示:

[0 1 2 3 4 5 6 7]

设置 start 、stop 值以及步长,最终输出 0-10 中的奇数:

  1. import numpy as np
  2. x = np.arange(1,10,2)
  3. print (x)

输出结果如下所示:

[1 3 5 7 9]

2. numpy.linspace()

表示在指定的数值区间内,返回均匀间隔的一维等差数组,默认均分 50 份,语法格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明如下:

  • start:代表数值区间的起始值;
  • stop:代表数值区间的终止值;
  • num:表示数值区间内要生成多少个均匀的样本。默认值为 50;
  • endpoint:默认为 True,表示数列包含 stop 终止值,反之不包含;
  • retstep:默认为 True,表示生成的数组中会显示公差项,反之不显示;
  • dtype:代表数组元素值的数据类型。


示例如下:

  1. import numpy as np
  2. #生成10个样本
  3. a = np.linspace(1,10,10)
  4. print(a)

输出结果:

[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]

Numpy索引和切片

NumPy 提供了多种类型的索引方式,常用方式有两种:基本切片与高级索引。本节重点讲解基本切片。

基本切片

NumPy 内置函数 slice() 可以用来构造切片对象,该函数需要传递三个参数值分别是 start(起始索引)、stop(终止索引) 和 step(步长) ,通过它可以实现从原数组的上切割出一个新数组。

示例如下:

  1. import numpy as np
  2. a = np.arange(10)
  3. #生成切片对象
  4. s = slice(2,9,3)#从索引2开始到索引9停止,间隔时间为2
  5. print(a[s])

输出结果:

[2 5 8]

您也可以通过冒号来分割切片参数,最终也能获得相同结果,示例如下:

  1. import numpy as np
  2. a = np.arange(10)
  3. b = a[2:9:2]
  4. print(b)

输出结果:

[2 5 8]

下面对冒号切片做简单地说明:

    • 如果仅输入一个参数,则将返回与索引相对应的元素。 对于上述示例来说[3] 就会返回 3。
    • 如果在其前面插入“:”如[:9],则会返回 0-8 的所有数字(不包含9)。
    • 如是 [2:] 则会返回 2-9 之间的数字。
    • 如果在两个参数之间,如[2:9],则对两个索引值之间的所有元素进行切片(不包括停止索引)。

多维数组切片

多维数组切片操作,实例如下:

  1. import numpy as np
  2. a = np.array([[1,2,3],[3,4,5],[4,5,6]])
  3. print(a)
  4. # 从[1:]索引处开始切割
  5. print(a[1:])

输出结果:

[[1 2 3]
 [3 4 5]
 [4 5 6]]
#切割后的新数组
[[3 4 5]
 [4 5 6]]

NumPy高级索引

1. 整数数组索引

整数数组索引,它可以选择数组中的任意一个元素,比如,选择第几行第几列的某个元素,示例如下:

  1. import numpy as np
  2. #创建二维数组
  3. x = np.array([[1, 2], [3, 4], [5, 6]])
  4. #[0,1,2]代表行索引;[0,1,0]代表列索引
  5. y = x[[0,1,2],[0,1,0]]
  6. print (y)

输出结果是:

[1  4  5]

2. 布尔数组索引

当输出的结果需要经过布尔运算(如比较运算)时,此时会使用到另一种高级索引方式,即布尔数组索引。下面示例返回数组中大于 6 的的所有元素:

  1. #返回所有大于6的数字组成的数组
  2. import numpy as np
  3. x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
  4. print (x[x > 6])

输出结果:

[ 7  8  9 10 11]

NumPy广播机制

NumPy 中的广播机制(Broadcast)旨在解决不同形状数组之间的算术运算问题。我们知道,如果进行运算的两个数组形状完全相同,它们直接可以做相应的运算。示例如下:

  1. import numpy as np
  2. a = np.array([0.1,0.2,0.3,0.4])
  3. b = np.array([10,20,30,40])
  4. c = a * b
  5. print(c)

输出结果如下:

[ 1.  4.  9. 16.]

NumPy遍历数组

NumPy 提供了一个 nditer 迭代器对象,它可以配合 for 循环完成对数组元素的遍历。

下面看一组示例,使用 arange() 函数创建一个 3*4 数组,并使用 nditer 生成迭代器对象。

示例1:

  1. import numpy as np
  2. a = np.arange(0,60,5)
  3. a = a.reshape(3,4)
  4. #使用nditer迭代器,并使用for进行遍历
  5. for x in np.nditer(a):
  6. print(x)

输出结果:

0 5 10 15 20 25 30 35 40 45 50 55

NumPy相关数组操作

NumPy 中包含了一些处理数组的常用方法,大致可分为以下几类:

  • 数组变维操作
  • 数组转置操作
  • 修改数组维度操作
  • 连接与分割数组操作

NumPy数组元素增删改查

数组元素操作方法
函数名称描述说明
resize 返回指定形状的新数组。
append 将元素值添加到数组的末尾。
insert 沿规定的轴将元素值插入到指定的元素前。
delete 删掉某个轴上的子数组,并返回删除后的新数组。
argwhere 返回数组内符合条件的元素的索引值。
unique 用于删除数组中重复的元素,并按元素值由大到小返回一个新数组。

1. numpy.resize()

numpy.resize() 返回指定形状的新数组。

numpy.resize(arr, shape)

使用示例:

  1. import numpy as np
  2. a = np.array([[1,2,3],[4,5,6]])
  3. print(a)
  4. #a数组的形状
  5. print(a.shape)
  6. b = np.resize(a,(3,2))
  7. #b数组
  8. print (b)
  9. #b数组的形状
  10. print(b.shape)
  11. #修改b数组使其形状大于原始数组
  12. b = np.resize(a,(3,3))
  13. print(b)

NumPy位运算

numpy按位运算函数
序号函数位运算符描述说明
1 bitwise_and & 计算数组元素之间的按位与运算。
2 bitwise_or | 计算数组元素之间的按位或运算。
3 invert ~ 计算数组元素之间的按位取反运算。
4 left_shift << 将二进制数的位数向左移。
5 right_shift >> 将二进制数的位数向右移。

bitwise_and()

该函数对数组中整数的二进制数进行“按位与”运算。示例如下:

  1. import numpy as np
  2. a = 10
  3. b = 12
  4. print("a的二进制数:",bin(a))
  5. print("b的二进制数:",bin(b))
  6. print("将a与b执行按位与操作:",np.bitwise_and(a,b))

NumPy字符串处理函数

NumPy处理字符串数组函数
函数名称描述
add() 对两个数组相应位置的字符串做连接操作。
multiply()  返回多个字符串副本,比如将字符串“ hello”乘以3,则返回字符串“ hello hello hello”。
center() 用于居中字符串,并将指定的字符,填充在原字符串的左右两侧。
capitalize() 将字符串第一个字母转换为大写。
title() 标题样式,将每个字符串的第一个字母转换为大写形式。
lower() 将数组中所有的字符串的大写转换为小写。
upper()  将数组中所有的字符串的小写转换为大写。
split()  通过指定分隔符对字符串进行分割,并返回一个数组序列,默认分隔符为空格。
splitlines()  以换行符作为分隔符来分割字符串,并返回数组序列。
strip() 删除字符串开头和结尾处的空字符。
join()  返回一个新的字符串,该字符串是以指定分隔符来连接数组中的所有元素。
replace() 用新的字符串替换原数组中指定的字符串。
decode()  用指定的编码格式对数组中元素依次执行解码操作。
encode() 用指定的编码格式对数组中元素依次执行编码操作。


上述函数基于 Python 内置的字符串函数实现, 下面对一些常用函数进行讲解。

numpy.char.add()

numpy.char.add() 将两个数组对应位置的字符串元素进行连接。示例如下:

  1. import numpy as np
  2. print(np.char.add(['welcome','url'], [' to C net','is c.biancheng.net'] ))

输出结果:

['welcome to C net' 'url is c.biancheng.net']

NumPy统计函数

numpy.amin() 和 numpy.amax()

这两个函数用于计算数组沿指定轴的最小值与最大值:

  • amin() 沿指定的轴,查找数组中元素的最小值,并以数组形式返回;
  • amax() 沿指定的轴,查找数组中元素的最大值,并以数组形式返回。


对于二维数组来说,axis=1 表示沿着水平方向,axis=0 表示沿着垂直方向。

 

 

示例如下:

  1. import numpy as np
  2. a = np.array([[3,7,5],[8,4,3],[2,4,9]])
  3. print ('数组a是:')
  4. print(a)
  5. #amin()函数
  6. print (np.amin(a))
  7. #调用 amin() 函数,axis=1
  8. print(np.amin(a,1))
  9. #调用amax()函数
  10. print(np.amax(a))
  11. #再次调用amax()函数
  12. print(np.amax(a,axis=0))

NumPy排序和搜索功能

NumPy排序算法
种类速度最坏复杂度工作空间稳定性
quicksort(快速排序) 1  O(n^2) 0 不稳定
mergesort(归并排序) 2 O(n * log(n)) ~n/2 稳定
heapsort(堆排序) 3 O(n * log(n)) 0 不稳定

numpy.sort()

numpy.sort() 对输入数组执行排序,并返回一个数组副本。它具有以下参数:

numpy.sort(a, axis, kind, order)

参数说明:

  • a:要排序的数组;
  • axis:沿着指定轴进行排序,如果没有指定 axis,默认在最后一个轴上排序,若 axis=0 表示按列排序,axis=1 表示按行排序;
  • kind:默认为 quicksort(快速排序);
  • order:若数组设置了字段,则 order 表示要排序的字段。


下面看一组示例:

  1. import numpy as np
  2. a = np.array([[3,7],[9,1]])
  3. print('a数组是:')
  4. print(a)
  5. #调用sort()函数
  6. print(np.sort(a))
  7. #按列排序:
  8. print(np.sort(a, axis = 0))
  9. #设置在sort函数中排序字段
  10. dt = np.dtype([('name', 'S10'),('age', int)])
  11. a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt)
  12. #再次打印a数组
  13. print(a)
  14. #按name字段排序
  15. print(np.sort(a, order = 'name'))

输出结果:

我们的数组是:
[[3 7]
[9 1]]

调用sort()函数:
[[3 7]
[1 9]]

按列排序:
[[3 1]
[9 7]]

再次打印a数组:
[(b'raju', 21) (b'anil', 25) (b'ravi', 17) (b'amar', 27)]
按name字段排序:
[(b'amar', 27) (b'anil', 25) (b'raju', 21) (b'ravi', 17)]

NumPy Matrix矩阵库

matlib.empty()

matlib.empty() 返回一个空矩阵,所以它的创建速度非常快。

numpy.matlib.empty(shape, dtype, order)

该函数的参数说明如下:

  • shape:以元组的形式指定矩阵的形状。
  • dtype:表示矩阵的数据类型。
  • order:有两种选择,C(行序优先) 或者 F(列序优先)。


示例如下:

  1. import numpy.matlib
  2. import numpy as np
  3. #矩阵中会填充无意义的随机值
  4. print(np.matlib.empty((2,2)))

输出结果:

[[1.81191899e+167 6.65173396e-114]
[9.71613265e-243 6.96320200e-077]]

NumPy IO操作

NumPy IO操作方法
文件类型处理方法
二进制文件 load() 和 save()
普通文本文件 loadtxt() 和 savetxt()


我们知道,文件会被保存在不同的计算机上(比如 Linux、Windows、MacOSX 等)。为了不受的计算机架构影响,NumPy 开发团队给 ndarray 对象引入了一种.npy文件格式,通过它来件实现对 ndarray 对象的保存。

numpy.save()

numpy.save() 方法将输入数组存储在.npy文件中。

numpy.save(file, arr, allow_pickle=True, fix_imports=True)

参数说明:

  • file:保存后的文件名称,其文件类型为.npy
  • arr:要保存的数组
  • allow_pickle:可选项,布尔值参数,允许使用 pickle 序列化保存数组对象。 
  • fix_imports:可选项,为了便于在 Pyhton2 版本中读取 Python3 保存的数据。


示例如下:

  1. import numpy as np
  2. a = np.array([1,2,3,4,5])
  3. np.save('first',a)

使用 load() 从 first.npy 文件中加载数据,如下所示:

  1. import numpy as np
  2. b = np.load('outfile.npy')
  3. print( b)

输出结果如下:

[1, 2, 3, 4, 5]

savetxt()

savetxt() 和 loadtxt() 分别表示以文本格式存储数据或加载数据。其中 savetxt() 的语法格式如下:

np.savetxt('filename文件路径', self.task, fmt="%d", delimiter=" ")

参数说明:

  • filename:表示保存文件的路径;
  • self.task: 要保存数组的变量名;
  • fmt="%d": 指定保存文件的格式,默认是十进制;
  • delimiter=" "表示分隔符,默认以空格的形式隔开。


示例如下:

  1. import numpy as np
  2. a = np.array([1,2,3,4,5])
  3. np.savetxt('second.txt',a)
  4. #使用loadtxt重载数据
  5. b = np.loadtxt('second.txt')
  6. print(b)

输出结果:

[ 1.  2.  3.  4.  5.] 

 

posted @ 2022-03-08 14:30  hanease  阅读(58)  评论(0编辑  收藏  举报