Numpy 基本介绍
Numpy 是 Python 中用于科学计算最基本的一个包,它除了提供了多维度数组对象以外,还提供了大象的派生类:矩阵等在 Numpy 中提供了许多针对数组对象快速操作的历程,例如:数学基本运算、逻辑处理、尺寸转换、排序、旋转、旋转、线性代数等运算Numpy 的核心就是 ndarray
对象,封装了具有相同数据类型的 n 维数组,编译许多操作来提高性能。相对于 Python 标准序列数据类型(list
、tuple
等); Numpy 数组本身具有的一些特性:
- Numpy 数组创建后大小不可变化;但 Python 中的
list
可以 通过append
和remove
函数实现动态改变; - 数组中的元素数据类型必须一致,而
list
中的元素可以为整数、也可以是字符串,或者字典; - 对于数据运算,操作来说 Numpy array 运算更快,数据量越大这个优越性越显著;
- 得益于对于大量数据较快的运算能力,数学家和科学家通常会把数据转化为数组,操作完之后再转化为自己的目标数据类型。
Numpy 数组的基本操作
通常使用 numpy 时,为了方面通常会用 np 名称来代替
2.1,np.array — 把数据转化为数组
Numpy 的核心就是数组类型,在所有操作之前首先要做的就是数组类型转换,类型转化前提保证数类型为序列类型( 例如 list
)
>>> a = [1,2,3,4,5,6] >>> import numpy as np >>> arr1 = np.array(a) >>> arr1 array([1, 2, 3, 4, 5, 6])
2.2,array.reshape(a,b,c) — 改变数组尺寸
reshape
函数 是用来把数组转化为特定尺寸,如果需要的的数组是二维的,a,b两个参数即可
>>> arr1 = [1,2,3,4,5,6,7,8] >>> arr1 = np.array(arr1) >>> arr1 array([1, 2, 3, 4, 5, 6, 7, 8]) >>> arr1.reshape(2,4)#二维 array([[1, 2, 3, 4], [5, 6, 7, 8]]) >>> arr1.reshape(1,2,4)#三维 array([[[1, 2, 3, 4], [5, 6, 7, 8]]])
2.3,array.ndim — 返回数组维度
>>> arr1 array([1, 2, 3, 4, 5, 6, 7, 8]) >>> arr1.ndim 1 >>> arr1.reshape(2,4).ndim 2 >>> arr1.reshape(1,2,4).ndim
2.4,array.shape — 返回数组的尺寸
shape
函数返回的是数组的尺寸,也就是每个维度所拥有的元素个数;
>>> arr1 array([1, 2, 3, 4, 5, 6, 7, 8]) >>> arr1.shape (8,) >>> arr1.reshape(2,4).shape (2, 4) >>> arr1.reshape(1,2,4).shape (1, 2, 4)
2.5,array.size — 返回数组中元素的数量
>>> arr1 array([1, 2, 3, 4, 5, 6, 7, 8]) >>> arr1.size 8 >>> arr1.reshape(2,4).size 8
2.6,np.arange(a,b,c) — 生成以 a 与 b之间以c为间隔的数组元素:
在 Python 语法中有一个 range()
函数,arange
函数与它功能一样,区别就是一个返回列表,一个返回数组;当没有参数 c 时,生成的数据间隔默认为 1;
>>> arr1 = np.arange(1,9) >>> arr1 array([1, 2, 3, 4, 5, 6, 7, 8]) >>> aarr1 = np.arange(1,9,2) >>> aarr1 array([1, 3, 5, 7])
2.7,np.linspace(a,b,num) — 生成 a 与 b 之间数量为 num 的数组
linspace
与arange
两个函数功能都是把两个数之间数作为数组的元素,但两者之间较大的区别是:arange
无法控制生成数组的元素个数,尤其是元素类型为浮点型时,而linspace
可以通过设置 num
很方便地地控制。
>>> arr1 = np.arange(2,8,0.6) >>> arr1 array([2. , 2.6, 3.2, 3.8, 4.4, 5. , 5.6, 6.2, 6.8, 7.4]) >>> arr1.size 10 >>> arr2 = np.linspace(2,8,8)#利用linspace生成2到8的8个数据,自行分配 >>> arr2 array([2. , 2.85714286, 3.71428571, 4.57142857, 5.42857143, 6.28571429, 7.14285714, 8. ])
2.8,np.dtype — 返回数组的元素类型
>>> arr1 =np.arange(1,8,1) >>> arr1 array([1, 2, 3, 4, 5, 6, 7]) >>> arr1.dtype dtype('int32')
2.9,np.astype(type) — 对数组中元素类型强制转换
可以利用 astype
函数把数组中的元素类型进行强制转换;
>>> arr1 array([1, 2, 3, 4, 5, 6, 7]) >>> arr1.dtype dtype('int32') >>> arr2 =arr1.astype('float64')#格式转换 >>> arr2.dtype dtype('float64')