Python NumPy基础知识,简单易懂,机器学习和深度学习基础必备

NumPy是Python 的一个第三方库,其支持大量高维度数组与矩阵运算,主要包括:

  1. 一个强大的N维数组对象Array;
  2. 比较成熟的(广播)函数库;
  3. 用于整合C/C++和Fortran代码的工具包;
  4. 实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。

其次,在机器学习和深度学习领域,numpy能够高效进行矩阵变换和运算,提高数据处理效率。

一、NumPy 数据类型

名称

描述

bool_

布尔型数据类型(True 或者 False)

int_

默认的整数类型(类似于 C 语言中的 long,int32 或 int64)

intc

与 C 的 int 类型一样,一般是 int32 或 int 64

intp

用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)

int8

字节(-128 to 127)

int16

整数(-32768 to 32767)

int32

整数(-2147483648 to 2147483647)

int64

整数(-9223372036854775808 to 9223372036854775807)

uint8

无符号整数(0 to 255)

uint16

无符号整数(0 to 65535)

uint32

无符号整数(0 to 4294967295)

uint64

无符号整数(0 to 18446744073709551615)

float_

float64 类型的简写

float16

半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位

float32

单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位

float64

双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位

complex_

complex128 类型的简写,即 128 位复数

complex64

复数,表示双 32 位浮点数(实数部分和虚数部分)

complex128

复数,表示双 64 位浮点数(实数部分和虚数部分)

二、NumPy基础使用

1.创建一维数组、二维数组、三维数组

导入numpy和查看版本

import numpy as np

np.__version__

 

 一维数组:

"""一维数组"""
#列表转化一维数组
list = [1,2,3]
array = np.array(list)
print('列表转化',array)
#自己创建一维全0数组
a = np.zeros((3,))
print('全0数组',a)
#自己创建一维全1数组
b = np.ones((3,))
print('全1数组',b)
#创建一维等差数组
c = np.arange(6)
print('等差数组',c)

结果: 

 

 二维数组:

"""二维数组"""
#列表转化为二维数组
list = [[1,2,3],[4,5,6]]
array = np.array(list)
print('列表转化为二维数组',array)
#创建二维全0数组
a = np.zeros((2,3))
print('二维全0数组',a)
#创建任意大小填充任意数字的数组
b = np.full((2,4),5)
print('任意大小',b)
#创建二维等差数组
c = np.arange(6).reshape(2,3)
print('二维等差数组',c)
#创建单位矩阵
d = np.eye(5)
print('单位矩阵',d)
#创建二维随机数数组
f = np.random.rand(2,4)
print('二维随机数数组',f)
#创建二维随机整数数组(数组小于6)
g = np.random.randint(6,size=(2,3))
print('二维随机整数数组(数组小于6)',g)

结果:  

 

 三维数组:

"""三维数组"""
#列表转化为三维数组
list = [[1,2,3],[4,5,6],[7,8,9]]
array = np.array(list)
print('列表转化为三维数组',array)
#创建三维全0数组
a = np.zeros((2,3,4))
print('三维全0数组',a)
#创建任意大小填充任意数字的数组
b = np.full((2,3,4),5)
print('三维任意大小',b)

结果:  

  

2.基本数组运算

一维数组运算:

"""一维数组运算"""
a = np.ones((5,))
b = np.arange(5)
print('加法',a+b)
print('减法',a-b)
print('乘法',a*b)
print('除法',b/a)

结果:  

二维数组运算:

"""二维数组运算"""
a = np.array([[1,2,3],[4,5,6]])
b = np.full((2,3),2)
print('加法',a+b)
print('减法',a-b)
print('乘法',a*b)
print('除法',a/b)
#dot点乘,.T表示维度转置,注意维度变化(2,3)*(3,2) = (2,2)
c = np.dot(a,b.T)
print('dot点乘',c)
#np.mat将数组转化为矩阵,可以直接使用 * 完成矩阵乘法计算
g = np.mat(a) * np.mat(b).T
print('矩阵乘法计算',g)
#单个数组求和
d = np.sum(a)
print('求和',d)
# axis=0 表示对每一列求和;axis=1 表示对每一行求和
print('每一列求和',np.sum(a, axis=0))
print('每一行求和',np.sum(a, axis=1))
#求平均值
f = np.mean(a)
print('平均值',f)
#求逆矩阵,维度长和宽必须一样,如(2,2)
h = np.linalg.inv(np.array([[1,2],[3,4]]))
print('逆矩阵',h)

结果:  

#tile,重复a给出的次数来构造数组
a = np.array([0,1,2])
print('a重复两次',np.tile(a,2))
print('a各维度都重复两次,变2维',np.tile(a,(2,2)))
print('a三个维度分别重复2,1,2次,变成三维',np.tile(a,(2,1,2)))

结果:  

 

#广播
a = np.array([[1,2],[1,2]])
b = np.array([1,2])
print('各维度相加',a+np.tile(b,(2,1)))
print('numpy广播特性同上',a+b)

结果:  

 

3.数组索引和切片 

"""数组的索引和切片"""
a = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]])
#第2行,第3列
print('第2行,第3列',a[1,2])
#取出范围,取出前2行,倒数第2列到最后1列
print('范围',a[:1,-2:])
# 给a数组的前2行,第2列,上的每个数加上100
a[np.arange(2), 1] += 100
print('前2行,第2列',a)
#获取数组中大于或小于某个确定值的数值
print('大于或小于',a>10)
print(a[a>10])

结果:  

4.机器学习基础使用,one-hot编码

#机器学习编码转化,one-hot常用
#转化为0,1矩阵,创建一个(特征维度,标签维度)的矩阵,5特征,3个分类标签
a = np.zeros((3,6))
#阳性特征的id,id转化过程略
list = [[1,2],[4,5],[2,3]]
for index,x in enumerate(list):
    for j in x:
        a[index,j] = 1
print(a)

结果:  

5.元素类型转换

"""元素类型转换"""
a = np.ones((2,3))
a.dtype

结果:  

 

b = np.array(a, dtype = np.int64)
b.dtype

结果:  

 

敲黑板:numpy是各种复杂模型的基础,是基础中的基础,这个需要多加练习,尤其是在机器学习和深度学习领域,numpy能够有效提升算法的计算效率和速度。所以,大家一起加油把。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

医学小达人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值