一、前言
NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库!
二、Numpy简单创建数组
import numpy as np #创建简单的列表 a=[1,2,3,4] #将列表转化为数组 b= np.array(b)
Numpy查看数组属性
数组元素的个数: b.size
数组形状: b.shape
数组维度 :b.ndim
数组的元素类型 :b.dtype
快速创建N维数组的api函数:array_one = np.ones([10, 10])
创建10行10列的数值为浮点0的矩阵:array_zero = np.zeros([10, 10])
从现有的数据创建数组:array(深拷贝);asarray(浅拷贝)
Numpy创建随机数组:np.random
均匀分布
np.random.rand(10, 10)创建指定形状(示例为10行10列)的数组(范围在0至1之间)
np.random.uniform(0, 100)创建指定范围内的一个数
np.random.randint(0, 100) 创建指定范围内的一个整数
正态分布
给定均值/标准差/维度的正态分布np.random.normal(1.75, 0.1, (2, 3))
三、实例
1.对二维数组索引
import numpy as np arr=np.random.normal(1.75,0.1,(4,5)) print(arr) after_arr=arr[1:3,2:4] print(after_arr)
2.改变数组形状
import numpy as np print("reshape函数的使用:") one_20 = np.ones(20) print("-->1行20列<--") print(one_20) one4_5=one_20.reshape([4,5]) print("-->4行5列<--") print(one4_5)
3.条件判断
1. import numpy as np 2. stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) 3. print (stus_score>80)
4.三目运算
如果数值小于80,替换为0;数值大于80,替换为90.
import numpy as np stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) print (np.where(stus_score<80,0,90))
5.求解最大值
import numpy as np stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) print ("每一列最大值为:") result=np.amax(stus_score,axis=0) print(result) print("每一行最大值为:") result=np.amax(stus_score,axis=1) print(result)
6.求解最小值
import numpy as np stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) print ("每一列最小值为:") result=np.amin(stus_score,axis=0) print(result) print("每一行最小值为:") result=np.amin(stus_score,axis=1) print(result)
7.指定轴平均值
import numpy as np stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) print ("每一列平均值为:") result=np.mean(stus_score,axis=0) print(result) print("每一行平均值为:") result=np.mean(stus_score,axis=1) print(result)
8.求方差(std)
import numpy as np stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) print ("每一列方差为:") result=np.std(stus_score,axis=0) print(result) print("每一行方差值为:") result=np.std(stus_score,axis=1) print(result)
9.数组与数的运算:加法
import numpy as np stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) print("加分前:") print(stus_score) stus_score[:,0]=stus_score[:,0]+5 print("加分后:") print(stus_score)
10.数组与数的运算:×法
import numpy as np stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) print("减半前:") print(stus_score) stus_score[:,0]=stus_score[:,0]*0.5 print("减半后:") print(stus_score)
11.数组间运算
import numpy as np a = np.array([1, 2, 3, 4]) b = np.array([10,20, 30, 40]) c = a + b d = a - b e = a * b f = a / b print("a+b为", c) print("a-b为", d) print("a*b为", e) print("a/b为", f)
12.矩阵运算:总成绩
import numpy as np stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]]) q=np.array([[0.4],[0.6]]) result = np.dot(stus_score,q) print("最终结果为:") print(result)
13.矩阵垂直拼接
import numpy as np print("v1为:") v1=[[0,1,2,3,4,5],[6,7,8,9,10,11]] print(v1) print("v2为:") v2=[[12,13,14,15,16,17],[18,19,20,21,22,23]] print(v2) result=np.vstack((v1,v2)) print("v1和v2的垂直拼接结果为") print(result)
14.矩阵水平拼接
import numpy as np print("v1为:") v1=[[0,1,2,3,4,5],[6,7,8,9,10,11]] print(v1) print("v2为:") v2=[[12,13,14,15,16,17],[18,19,20,21,22,23]] print(v2) result=np.hstack((v1,v2)) print("v1和v2的水平拼接结果为") print(result)
15.读取文件,设置分隔符“,”
import numpy as np result=np.genfromtxt("D:\\1\\students_score.csv",delimiter=",") print(result)