栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Numpy快速上手(机器学习基础)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Numpy快速上手(机器学习基础)

文章目录

前言numpy基本操作

生成0,1数组array和asarray的不同创建等差数组创建正态分布形状修改元素的Curd运算

逻辑运算三元运算矩阵运算

广播机制矩阵基本运算

求转置矩阵相乘求逆矩求伴随
「这是我参与2022首次更文挑战的第5天,活动详情查看: 2022首次更文挑战」

本博文优先在掘金社区发布!

前言

刚才我已经演示了,机器学习的常用的绘图库之一的matplotlib。那么接下来使我们另一个经常使用的numpy。numpy的使用相当广泛,所以不论你是不是学习机器学习,其实都是要学的当然还有一个库pandas也是我们需要掌握的(不过这个库内容稍微比较多,同样的使用pandas可以帮助我们对数据进行清洗)

在进行机器学习,或者数学运算时,我们经常需要使用到矩阵,那么numpy就为我们提供了很多类似的功能。并且numpy的使用相当简便,而且速度相当之快,相对于python自带的list而言,numpy由于底层是C语言直接避免了GIL的限制,支持并行运算,同时相对于list的存储模式,numpy更像是一个数组。

请注意我这里使用的环境是jupyter
速度对比

import random 
import time import numpy as np 
a = [] 
for i in range(100000000): 
    a.append(random.random()) 
# 通过%time魔法方法, 查看当前行的代码运行一次所花费的时间 
%time sum1=sum(a) 
b=np.array(a) 
%time sum2=np.sum(b)
numpy基本操作

首先numpy的使用和我们的list的使用类似。区别只是在api的使用上面略有区别。

此外支持的数据类型有

>>> a = np.array([[1, 2, 3],[4, 5, 6]], dtype=np.float32)

>>> a.dtype

dtype(‘float32’)

生成0,1数组

这个也是常用的,例如我们绘制一张图片。假设一张RGB图片,那么他是典型的(nxnx3)
nxn表示像素点。

ones = np.ones([4,8]) 
ones

array和asarray的不同

先说结论

Arrary相当于深度拷贝
asarrary 只是类型转换,相当于浅拷贝

创建等差数组

指定步长 参数

step:步长,默认值为1
np.arange(10, 50, 2) 创建正态分布

np.random.normal(loc=0.0, scale=1.0, size=None)

loc:float
此概率分布的均值(对应着整个分布的中心centre)
scale:float 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
size:int or tuple of ints 输出的shape,默认为None,只输出一个值
np.random.standard_normal(size=None) 返回指定形状的标准正态分布的数组。

形状修改

np.reshape(shape)

元素的Curd

这个的api的模板固定,只是api名称不同。我们这边演示添加

import numpy as np
#创建数组arr arr = np.array([[1,2,3,4],[5,6,7,8]]) 
print('第1个数组arr:',arr)   
print('向arr数组添加元素:') 
print(np.append(arr,[[9,10],[11,12]])) 
print('原数组:',arr)   
print('沿轴 0 添加元素:') 
print(np.append(arr,[[9,10,11,12],[11,11,11,11]], axis=0)) 
print('沿轴 1 添加元素:') 
print(np.append(arr,[[9,10],[11,12]], axis=1))

注意接受参数

运算 逻辑运算
# 生成10名同学,5门功课的数据
>>> score = np.random.randint(40, 100, (10, 5))
# 取出最后4名同学的成绩,用于逻辑判断
>>> test_score = score[6:, 0:5]
# 逻辑判断, 如果成绩大于60就标记为True 否则为False
>>> test_score > 60
array([[ True, True, True, False, True],
[ True, True, True, False, True],
[ True, True, False, False, True],
[False, True, True, True, True]])
# BOOL赋值, 将满足条件的设置为指定的值-布尔索引
>>> test_score[test_score > 60] = 1
>>> test_score
array([[ 1, 1, 1, 52, 1],
[ 1, 1, 1, 59, 1],
[ 1, 1, 44, 44, 1],
[59, 1, 1, 1, 1]])
三元运算

np.where(temp > 60, 1, 0)

矩阵运算

广播机制
arr1 = np.array([[0],[1],[2],[3]])
arr1.shape
# (4, 1)
arr2 = np.array([1,2,3])
arr2.shape
# (3,)
arr1+arr2
# 结果是:
array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])

矩阵基本运算

arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])

求转置

矩阵相乘

np.dot(A,B)

求逆矩

np.linalg.inv(a)

求伴随

所以
det(a)


np.linalg.det(a)

det_a=np.linalg.det(a)

ni=det_a*np.linalg.inv(a)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号