Day03 - Python中科学计算库Numpy基本使用

Day03 - Python中科学计算库Numpy基本使用

参考代码链接:https://pan.baidu.com/s/17NAoghPf0vdN3rlMwFi9PQ  提取码:zfl6

1,Numpy简介

本节我们将会学习Python中用于科学计算的第三方库之Numpy。在学习了Python中的基本知识后,我们开始学习机器学习中的常用的知识了。NumPy是一个开源的Python科学计算库,Numerical Python简写。主要功能之一是用来操作数组和矩阵,是科学计算、深度学习等高端领域的必备工具。NumPy这个词来源于两个单词—Numerical和Python。NumPy提供了大量的库函数和操作,可以帮助程序员轻松地进行数值计算。

这类数值计算广泛用于以下任务:

机器学习模型:在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。NumPy提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。NumPy数组用于存储训练数据和机器学习模型的参数。

图像处理和计算机图形学:计算机中的图像表示为多维数字数组。NumPy成为同样情况下最自然的选择。实际上,NumPy提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。

数学任务:NumPy对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于Python的MATLAB的快速替代。

2,数组创建和结束

numpy属性:ndim-维度,shape-行数和列数,size-元素个数

#numpy 数组的创建
a = np.array([2,3,4],dtype=np.int32)#一维数组的创建[2,3,4]
a = np.array([1,2,3],[2,3,4])		#多维数组的创建([1,2,3] [2,3,4])
a = np.zeros((2,4))				   #创建全零数组([0.0.0.0][0.0.0.0])
a = np.ones((3,4),dtype=np.int) 	
#创建全一数组,同时指定数据类型[[1 1 1 1] [1 1 1 1] [1 1 1 1]]
a = np.empty((3,4))#创建全空数组,每个数接近于0
a = np.arange(1,10,2)#1-10的数据,步长为2,即创建连续数组[1 3 5 7 9]


a = np.array([2,3,4],dtype=np.int32)
print(a.ndim)#1
print(a.shape)#(3,)
print(a.size)#3
#创建两个一维矩阵
a = np.array([1,2,3,4])
b = np.arange(4)
c1 = a - b	#对应相减
c2 = a * b	#对应相乘
c3 = a.dot(b)#对应相乘再求和
c4 = b**2	#对应位置平方
c5 = np.sin(a)#数学函数工具求sin


#创建两个多维矩阵
a = np.array([[1,1],[0,1]])
b = np.arange(4).reshape((2,2))#reshape()重新得出矩阵的行和列
c1 = a.dot(b)#矩阵乘a*b

3,赋值copy和=

=赋值方式有关联性

copy赋值方式没有关联性

#=赋值的关联性
a = np.arange(4)#[0 1 2 3]
b = a
a[0] = 11#a中元素发生变化,b中元素同样变化
print(a)#[11 1 2 3]
print(b)#[11 1 2 3]
b[1:3] = [12,13]#b中元素变化,a中元素同样变化
print(a)#[11 12 13 3]
print(b)#[11 12 13 3]


#copy赋值没有关联性
a = np.arange(4)
b = a.copy()
a[3] = 44
print(a)#[0  1 2 44]
print(b)#[0 1 2 3]

4,广播机制

当数组跟一个标量进行计算是,标量需要根据数组的形状进行拓展,然后执行运算。

该拓展过程称为“广播”。

a = np.array([[0,0,0],[10,10,10],[20,20,20],[30,30,30]])
b = np.array([0,1,2])
print(a+b)
#a,b的维度不同,在进行运算的时候会将b广播后进行计算
#[[ 0 1 2] [10 11 12] [20 21 22] [30 31 32]]

#相当于讲b重复多次
b = np.tile([0,1,2],(4,1))#b行重复4次,列重复1次
print(a+b)

5,常用函数

bincout() 计算索引出现次数
argmax() 返回最大元素的值
around() 近似取整
floor() 向下取整
ceil() 向上取整

课后作业:用numpy中的内置函数实现输出一个随机生成的均匀分布(0,1)的10个数据离一个给定值最近的数:

import numpy as np
def nearest_number(num):
	randomNumList = np.random.uniform(0,1,10)
	pos = np.argmin((randomNumList - num) ** 2)
	return randomNumList[pos]
#找出距离最近的数
print(nearest_number(0.5))

猜你喜欢

转载自blog.csdn.net/qq_44621510/article/details/89815176