Numpy学习
==============
一、Numpys简介
NumPy(Numerical Python) 是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,主要用于数组计算。
二、Numpys的基本使用方法
1.numpy使用准备
首先要下载numpy:pip install numpy
之后导入numpy这个包:import numpy as np
2.numpy的对象
多维数组Ndarray对象:NumPy最重要的一个特点是其N维数组对象ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。
3.创建numpy的多维数组对象
np.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
4.创建的几种方法
(1)用数组:
data=[6,7.5,8,0,1] # 创建列表
arr=np.array(data) # 转换为一维数组
data=[[1,2,3,4],[5,6,7,8]] # 创建嵌套序列
arr=np.array(data) # 转换为二维数组
由函数创建数组
利用numpy提供的函数方便的创建一些特定的数组,具体内容如下:
函数 含义
np.zeros() 创建指定维度全0多维数组。
np.ones() 创建指定维度全1多维数组。
np.eye() 创建指定维度的单位矩阵。
np.arange() 创建指定数量的顺序数组(默认0开始)。
linspace() 创建指定范围的一维数组,并分成若干等份。
reshape() 更改数组的维度
三、Numpy的运算
1:基本运算
标量表示实数。数组和标量的运算,表示标量和数组的每一个元素进行运算。例如实数加上一个数组,表示实数和数组里面的每一个元素相加。
2:广播扩散
不同维度的数组进行运算时,数组具有广播特性,即自动将维度进行扩展。例如一个33的二维数组和一个13的一维数组进行加法或者减法,13的一维数组会进行广播,将维度扩展为33,例如:
a = np.array([[1,2,3],
[1,2,3],
[1,2,3]])
b = np.array([1,2,3])
c = a + b 或者 c = a – b
四、Numpy的索引
1.布尔索引
arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
输出arr<5
输出结果为:
[[ True True True]
[ True False False]
[False False False]]
如果令arr[arr<5]=0
输出arr
输出结果为:
[[0 0 0]
[0 5 6]
[7 8 9]]
2.三元运算符
三元运算符np.where(表达式,数1,数2),当表达式为真,结果为数1,否则结果为数2。
例如np.where(arr<5,0,10)
输出结果为:
[[ 0 0 0]
[ 0 10 10]
[10 10 10]]
五、数学方法
1.均值mean
np.mean表示求数组的平均值。例如:
arr=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
np.mean(arr); #统计二维数组所有元素的均值。
输出:5
np.mean(arr,axis=0) #统计每列的均值,返回列表 。
输出:array([4., 5., 6.])
np.mean(arr,axis=1) #统计每行的均值,返回列表。
输出:array([2., 5., 8.])
2.sum方法
np.sum表示计算数组元素的和。例如:
c = np.array([[0, 2, 1],
[3, 5, 6],
[0, 1, 1]])
np.sum© #统计二维数组所有元素的和。
输出:19
np.sum(c,axis=0) #统计每列的和,返回列表。
输出:array([3, 8, 8])
np.sum(c,axis=1) #统计每行的和,返回列表。
输出:array([ 3, 14, 2])
4.2.4 最小值与最大值
np.min和np.max表示数组元素的最小值和最大值。例如:
a = np.array([[1,5,3],
[4,2,6]])
np.min(a) #无参,所有中的最小值
输出:1
np.min(a,axis=0) #axis=0,每列的最小值
输出:array([1, 2, 3])
np.min(a,axis=1) #axis=1,每行的最小值
输出:array([1, 2])
3.排序(sort)
np.sort表示对数组元素进行排序。例如:
arr = np.array([[1,5,6],
[4,2,3],
[7,8,9]])
np.sort(arr, axis=0) #二维数组按列排序;
输出:array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
np.sort(arr, axis=1) #二维数组按行排序;
输出:array([[1, 5, 6],
[2, 3, 4],
[7, 8, 9]])
4.唯一化(unique)
NumPy提供了一些针对一维ndarray的基本集合运算。最常见的可能要数np.unique了,它用于找出数组中的唯一值,并返回已排好序的结果。
names=np.array([3,3,3,2,2,1,1,4,4])
np.unique(names) #找出names数组中的唯一值并返回已排序的结果
输出:array([1, 2, 3, 4])
5.数组拼接
数组拼接包括np.vstack()和np.hstack(),其中vstack表示竖拼接,hstack表示行拼接。
a=np.array([[1,2,3],
[4,5,6]])
b=np.array([[7,8,9],
[10,11,12]])
np.vstack((a,b))
输出结果为:
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
np.hstack((a,b))
输出结果为:
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 10, 11, 12]])
6.生成随机数
生成随机数(uniform)
rand(d0,d1,…,dn) 根据d0-dn创建随机数数组,浮点数,[0,1),均匀分布 np.random.rand(3,4)
randn(d0,d1,…,dn) 根据d0-dn创建随机数数组,标准正态分布 np.random.randn(3,4)
randint(low,high,shape) 根据shape创建随机整数或整数数组,范围是[low, high) np.random.randint(100,200,
(3,4))
uniform(low,high,size) 产生具有均匀分布的数组,low起始值,high结束值,size形状 np.random.uniform(0,10,(3,4))
normal(loc,scale,size) 产生具有正态分布的数组,loc均值,scale标准差,size形状 np.random.normal(10,5,(3,4))
poisson(lam,size) 产生具有泊松分布的数组,lam随机事件发生率,size形状 np.random.poisson(3,(3,4))
hart.js/