python常用框架工具之numpy——华为AI学习笔记9

举报
darkpard 发表于 2022/02/09 19:22:04 2022/02/09
【摘要】 它在数组和矩阵操作上都非常方便,是开源的数值计算库1. numpy介绍numpy是用C语言实现的,做了并行处理,比python的列表直接计算数组要快很多numpy有很多计算函数,包括线性变换、傅里叶变换、随机模块等2. 数组2.1. 优势相比列表的优势减少编程量,因为已经进行了数组封装和优化运算效率,并行计算,C语言实现占用内存比较小2.2. ndarray对象——numpy数组数组的元素,...

它在数组和矩阵操作上都非常方便,是开源的数值计算库

1. numpy介绍

  1. numpy是用C语言实现的,做了并行处理,比python的列表直接计算数组要快很多

  2. numpy有很多计算函数,包括线性变换、傅里叶变换、随机模块等

2. 数组

2.1. 优势

相比列表的优势

  1. 减少编程量,因为已经进行了数组封装和优化

  2. 运算效率,并行计算,C语言实现

  3. 占用内存比较小

2.2. ndarray对象——numpy数组

数组的元素,类型必须统一,避免类型检查,提高速度

序号从0开始

2.3. 数组的创建

1.2.3.1. np.array(list)

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

图片

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

图片

np.array([[[3,5,6], [3,5,6]],[[4,5,7], [3,5,8]]])

图片

2.3.2. 全零数组

c = np.zeros([2, 2])

图片

2.3.3. 全1数组

np.ones()

2.3.4. 等间距数组

np.arange(10, 20, 2)

图片

np.linspace(0, 100, 10)

图片

2.4. 数组的类型

bool_

int_

intc

intp

int8

int16

int32

int64

unit8

float

float16

float32

float64

complex_

complex64

complex128

unit16

unit32

unit64

2.5. 切片与索引

2.5.1 一维数组

a = np.arrange(10)

索引:s = a[1], s = 1

切片:s = a[0:5], s = array([0,1,2,3,4])

步长切片:s = a[0:5:2], s = array([0, 2, 4]);s = slice(0, 5, 2), a[s] = array([0, 2, 4])

下标可以用负数

2.5.2. 二维数组

a = np.array([[0, 1, 2], [1, 2, 3], [2, 3, 4]])

a =

0 1 2
1 2 3
2 3 4

a[:2, 1:] =


1 2

2 3



a[2] = a[2, :] = a[2:, :] =







2 3 4

a[1, :2] = a[1:2, :2] =




1 2



2.5.3. 条件判断

图片

2.6. 广播

对不同形状的数组,对较小的数组进行拓展,与较大数组进行匹配

np.array([1, 2, 3]) + np.array([5]) = array([6, 7, 8])

np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) + np.array([0, 1, 2]) = array([[1, 2, 3], [1, 2, 3], [1, 2, 3]])

np.array([[0], [1], [2]]) + np.array([0, 1, 2]) = array([[0, 1, 2], [1, 2, 3], [2, 3, 4]])

图片

2.7. 常用方法

np.reshape():定义形状

np.flat:展开成一维数组,必须用下标引用

np.trnspose():转置,可以指定某一行或某一列的数据进行翻转

对于二维数组来说很好理解,但对于多维数组来说则不好理解,有机会再做展开。

np.stack():拼接

np.insert():指定位置插入

np.delete():删除后返回新的数组

图片

3. 矩阵

Numpy Matrix库

import numpy.matlib

np.matlib.empty():返回未初始化的新矩阵,无意义的数值

np.matlib.zeros():返回全0矩阵

np.matlib.ones():返回全1矩阵

np.matlib.eye():返回单位矩阵

np.matlib.identity():返回单位矩阵

np.matlib.rand():返回指定的随机数填充的矩阵

4. 数组转矩阵

a = np.array([1, 2, 3])

b = np.mat(a)

c = np.matrix(a)

如果a本身就是矩阵,b指向a,不新建,c一定是新建的

matrix b = matrix c = [[1 2 3]]

5. numpy中的运算

5.1. 矩阵相乘

a = np.mat([[1], [2], [3]])

b = np.mat([[1, 2, 3]])

c = a * b

d = np.dot(a, b)

c = d = matrix([[1 2 3] [2 4 6] [3 6 9]])

5.2. 元素相乘

c = np.multipy(a, b)

c = matrix([[1 4 9]])

c = a * 2

c = matrix([[2 4 6]])

5.3. 求逆和转置

图片

6. 随机模块及常用方法

np.random.rand(size):输出给定形状,范围在[0, 1)的随机数

np.random.randn([size]):输出在服从标准正态分布的随机数

np.random.randint(low[, high, size]):输出在[low, high)范围的整数

np.random.random(size):范围在[0, 1)的随机数

np.random.beta(a, b [, size]):贝塔分布

np.random.lognormal([mean, sigma, size]):对数正态分布

np.random.normal([loc, scale, size]):正态分布

np.random.poisson([lam, size]):泊松分布

np.random.uniform([low, high, size]):均匀分布

7. 常用函数

7.1. 算术函数

三角函数:np.sin(), np.cos(), np.tan()

舍入函数:np.around(), np.floor(), np.ceil()

加减乘除:np.add(), np.subtract(), np.multipy(), np.divide()

余数:np.mod()

平方、乘方和方根:np.square(), np.pow(), np.sqrt()

7.2. 统计函数

最大最小值:np.amin(), np.amax()

中位数:np.median()

算术平均:np.mean()

加权平均:np.average()

标准差、方差:np.std(), np.var()

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。