在学习数据分析时,NumPy做为最基础的数据分析库,咱们可以熟练的掌握它是学习数据分析的必要条件。接下来就让咱们学习该库吧。python
学习NumPy库的环境: 数组
python:3.6.6编辑器
编辑器:pycharm函数
NumPy安装:在cmd命令下,直接使用pip语句,pip install NumPy便可!工具
NumPy是使用Python进行科学计算的基本软件包。它主要包含一下内容:学习
具体的内容可参考NumPy官网信息:点击官网优化
Python基础数据类型中是没有数组概念,NumPy库可以很好的知足了数组缺失,数组对象的优势有:spa
1、ndarray的介绍code
一、ndarray的构成:对象
ndarray有两部分构成,一是实际数据;二是描述这些数据的元数据(数据维度、数据类型等)。ndarray数组通常要求全部元素类型相同(同质),数组的下标从0开始。
其中轴(axis):保存数组的维度;秩(rank):轴的数量
二、ndarray对象的属性:
.ndim:秩,即轴的数量或维度的数量;
.shape:ndarray对象的尺度,对于矩阵,n行m列;
.size:ndarray对象元素的个数,至关于.shape的n*m的值;
.dtype:ndarray对象的元素类型;
.itemsize:ndarray对象中每一个元素的大小,以字节为单位。
以下举例说明:
求数组a的平方和数组b的立方和:
import numpy as np def npSum(): a = np.array([0, 1, 2, 3, 4]) b = np.array([9, 8, 7, 6, 5]) c = a ** 2 + b ** 3 return c print(npSum()) [729 513 347 225 141]
以下是ndarray属性的练习:
import numpy as np a = np.array([[0, 1, 2, 3, 4], [9, 8, 7, 6, 5]]) print(a) print(a.ndim) print(type(a)) print(a.shape) print(a.size) print(a.dtype) print(a.itemsize) [[0 1 2 3 4] [9 8 7 6 5]] 2 <class 'numpy.ndarray'> (2, 5) 10 int32 4
三、ndarray数组的建立方法:
以下举例说明:
①、从python中的列表、元组等类型建立ndarray数组:
1 import numpy as np 2 x = np.array([[1, 2], [9, 8], (0.1, 0.2)]) 3 print(x) 4 print(x.shape) 5 print(x.size) 6 7 [[1. 2. ] 8 [9. 8. ] 9 [0.1 0.2]] 10 (3, 2) 11 6
②、使用NumPy中函数建立ndarray数组:
np.arange(n) 相似range()函数,返回ndarray类型,元素从0到n-1;
np.ones(shape) 根据shape生成一个全1数组,shape是元组类型;
np.zeros(shape) 根据shape生成一个全0数组,shape是元组类型;
np.full(shape, val) 根据shape生成一个数组,每一个元素值都是val;
np.eye(n) 建立一个正方的n*n单位矩阵,对角线为1,其他为0;
相似函数
np.ones_like(a) 根据数组a的形状生成一个全1数组
np.zeros_like(a) 根据数组a的形状生成一个全0数组
np.full_like(a,val) 根据数组a的形状生成一个数组,每一个元素值都是val
np.linspace() 根据起止数据等间距地填充数据,造成数组
np.concatenate() 将两个或多个数组合并成一个新的数组
1 import numpy as np 2 3 print(np.arange(10)) 4 print(np.ones((3, 6))) 5 print(np.zeros((3, 6), dtype=np.int32)) 6 print(np.eye(5)) 7 8 [0 1 2 3 4 5 6 7 8 9] 9 [[1. 1. 1. 1. 1. 1.] 10 [1. 1. 1. 1. 1. 1.] 11 [1. 1. 1. 1. 1. 1.]] 12 [[0 0 0 0 0 0] 13 [0 0 0 0 0 0] 14 [0 0 0 0 0 0]] 15 [[1. 0. 0. 0. 0.] 16 [0. 1. 0. 0. 0.] 17 [0. 0. 1. 0. 0.] 18 [0. 0. 0. 1. 0.] 19 [0. 0. 0. 0. 1.]]
1 #不限制数据类型的时候生成的是浮点数 2 a = np.linspace(1, 10, 4) 3 print(a) 4 # endpoint 是指最后一个元素是不是生成的四个元素中的一个 5 b = np.linspace(1, 10, 4, endpoint=False) 6 print(b) 7 c = np.concatenate((a, b)) 8 print(c) 9 10 11 [ 1. 4. 7. 10.] 12 [1. 3.25 5.5 7.75] 13 [ 1. 4. 7. 10. 1. 3.25 5.5 7.75]
四、数组的变换
对于建立后的ndarray数组,能够对其进行维度变换和元素类型变换:
ndarray数组的维度变换
.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变
.resize(shape) 与.reshape()功能一致,但修改原数组
.swapaxes(ax1, ax2) 将数组n个维度中的两个维度进行调换
.flatten() 对数组进行降维,返回折叠后的一维数组,原数组不变
1 a = np.ones((2, 3, 4), dtype=np.int32) 2 print(a) 3 print(a.reshape((3, 8))) 4 print(a.resize((3, 8))) 5 print(a) 6 print(a.flatten()) 7 8 [[[1 1 1 1] 9 [1 1 1 1] 10 [1 1 1 1]] 11 12 [[1 1 1 1] 13 [1 1 1 1] 14 [1 1 1 1]]] 15 [[1 1 1 1 1 1 1 1] 16 [1 1 1 1 1 1 1 1] 17 [1 1 1 1 1 1 1 1]] 18 None 19 [[1 1 1 1 1 1 1 1] 20 [1 1 1 1 1 1 1 1] 21 [1 1 1 1 1 1 1 1]] 22 [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
# astype()方法必定会建立新的数组(原始数组的一个拷贝),即便两个类型一致
1 a = np.ones((2, 3, 4), dtype=np.int) 2 print(a) 3 b = a.astype(np.float) 4 print(b) 5 6 [[[1 1 1 1] 7 [1 1 1 1] 8 [1 1 1 1]] 9 10 [[1 1 1 1] 11 [1 1 1 1] 12 [1 1 1 1]]] 13 [[[1. 1. 1. 1.] 14 [1. 1. 1. 1.] 15 [1. 1. 1. 1.]] 16 17 [[1. 1. 1. 1.] 18 [1. 1. 1. 1.] 19 [1. 1. 1. 1.]]]
五、ndarray数组向列表的转换
1 import numpy as np 2 3 a = np.full((2, 3, 4), 25, dtype=np.int32) 4 print(a) 5 print(a.tolist()) 6 7 [[[25 25 25 25] 8 [25 25 25 25] 9 [25 25 25 25]] 10 11 [[25 25 25 25] 12 [25 25 25 25] 13 [25 25 25 25]]] 14 [[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]], [[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]]