numpy简介
NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。它整合了C/C++代码的工具,使用时又很像Matlab,还包括了线性代数、傅里叶变换、随机数生成等功能。
在使用numpy库之前你需要安装numpy库:
Windows下按Win+r
输入cmd
之后输入pip install numpy
等待下载安装完毕之后显示Successfully collected pacges:numpy
表示成功。
或者可以导入numpy模块并生成4*4对角矩阵进行测试:
>>> import numpy
>>> numpy.eye(4)
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
numpy ndarray对象介绍
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
创建一个ndarray:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数说明:
名称 | 描述 |
---|---|
object | 数组或嵌套的数列 |
dtype | 数组元素的数据类型 |
copy | 对象是否需要复制 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认返回一个与基类类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
下面我们来对上面的一些参数进行修改及测试:
>>> import numpy
>>> numpy.array([1,2,3,4,5])
array([1, 2, 3, 4, 5])
>>> numpy.array([1,2,3,4,5],dtype=str) #数据类型设置为字符串,或者将str改为'<U1'
array(['1', '2', '3', '4', '5'], dtype='<U1')
>>> numpy.array([1,2,3,4,5],dtype = complex) #设置为复数类型
array([1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j, 5.+0.j])
>>> b = numpy.array([1,2,3,4,5],order = 'F',ndmin = 3) #设置维度为3
>>> b
array([[[1, 2, 3, 4, 5]]])
>>> b = numpy.array([[1,2,3,4,5],[6,7,8]])
>>> print(b)
[list([1, 2, 3, 4, 5]) list([6, 7, 8])]
numpy数据类型
numpy数据类型比python内置的数据类型多很多,常用的有:
- bool_ :布尔型数据类型
- int_ :默认的整数类型
- float_ :双精度浮点数,等于float64
- complex_:complex128 类型的简写,64位浮点数
其中int类型还有int8、int16、int32、int64,uint8、uint16、uint32、uint64
其中float类型还有float16、float32、float64
其中complex类型还有complex64、complex128
数据类型对象(dtype)
数据类型对象是用来描述与数组对应的内存区域如何使用,这依赖如下几个方面:
- 数据的类型
- 数据的大小
- 数据的字节顺序(小端法或大端法,**"<“意味着小端法(最小值存储在最小的地址,即低位组放在最前面)。”>"意味着大端法(最重要的字节存储在最小的地址,即高位组放在最前面)。**就像我们前面代码中使用的’<U1’中的<。
- 在结构化类型的情况下,字段的名称、每个字段的数据类型和每个字段所取的内存块的部分
内建类型字符代码:
字符 | 对应类型 |
---|---|
b | 布尔型 |
i | (有符号) 整型 |
u | 无符号整型 integer |
f | 浮点型 |
c | 复数浮点型 |
m | timedelta(时间间隔) |
M | datetime(日期时间) |
S, a | (byte-)字符串 |
例2:
int8, int16, int32, int64 四种数据类型可以使用字符串 ‘i1’, ‘i2’,‘i4’,‘i8’ 代替
>>> numpy.dtype('i4')
dtype('int32')
>>> numpy.dtype('i8')
dtype('int64')
>>> numpy.dtype('i1')
dtype('int8')
>>> numpy.dtype('i2')
dtype('int16')
例3:结构化数据类型的使用
import numpy as np
a = np.dtype([('age',np.int8)])
b = np.array([(10,),(20,),(30,)],dtype = a)
print(b['age'])
'''
[10 20 30]
'''
例4:定义一个结构化数据类型car,包含字符串字段license,整数字段value,浮点数字段distance
import numpy as np
car = np.dtype([('licence','S20'),('value','i4'),('distance','f4')])
cars = np.array([('AE86',15000,3452.23),('S666',12000,1232.933),('XX00',999,520.521)])
print(cars)
'''
[['AE86' '15000' '3452.23']
['S666' '12000' '1232.933']
['XX00' '999' '520.521']]
'''
numpy数组的属性
NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2
未完待更…