美文网首页
人工智能之数学(四) ------ 矩阵numpy操作

人工智能之数学(四) ------ 矩阵numpy操作

作者: 千喜Ya | 来源:发表于2019-08-08 22:35 被阅读0次

菜鸟教程 NumPy 教程


一.基本概念

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

二. Ndarray

实例 1 :

import numpy as np 
a = np.array([1,2,3])  
print (a)

输出结果如下:

[1, 2, 3]

实例 2 :

# 多于一个维度  
import numpy as np 
a = np.array([[1,  2],  [3,  4]])  
print (a)

输出结果如下:

[[1, 2] 
 [3, 4]]

实例 3 :

# 最小维度  
import numpy as np 
a = np.array([1,  2,  3,4,5], ndmin =  2)  
print (a)

输出如下:

[[1, 2, 3, 4, 5]]

实例 4 :

# dtype 参数  
import numpy as np 
a = np.array([1,  2,  3], dtype = complex)  
print (a)

输出结果如下:

[ 1.+0.j,  2.+0.j,  3.+0.j]

三.矩阵库(Matrix)

全零方阵 : ndim : 维度(2维) shape : 形状(3,3) 2*4全1矩阵: 元素是随机浮点数3*4矩阵 : 元素是0-5之间的整数(半开区间,不包含5)2*3矩阵 生成单位矩阵(eye(n,k)) : n是维数,k是对角线的位置 生成对角矩阵(diag(a,k)) : 改变形状(reshape) : 要注意能不能整除 np.arange : 生成2 * 3 * 4,范围是0-23的数组

slice(切片)与index :

一维数组
arr[3:8] = -2 : 更改3-8的数组元素 多维数组 :

arr_2[0,1] : 深度是0的第二行
arr_2[0,2,1:] : 深度是0的第三行的第二个数到最后一个数

arr_2[:,:,1] : 第二列 arr_2[0,0:2,1:] : 深度为0,第一 - 二行,第二列到最后一列 arr_2[0,::2,::2] : 深度为0,隔一行取一行,隔一列取一列 找特定的元素 : 维数为3,中间3个数组第一个连起来是0的坐标,第二个数连起来是2的坐标,第三个数连起来是8的坐标,第四个数连起来是10的坐标

也可以使用np.ix_: 交叉相乘的,元素个数为122,第一个[0]是深度,第二个[0,2]是行数,第三个[0,2]是列数,但是注意输出形状为 : (1,2,2)

合并np.vstack(v : 垂直,垂直方向合并) : 第一个轴不同之外,其他要相同,V是指在垂直轴(第一个轴)上(列)要相同
列数要相同 : arr_5: arr_6: 合并结果: np.hstack(h):第二个轴不同之外,其他轴要相同

np.dstack() : 第三个轴不同之外,其他轴要相同(所以三维以上才能用)

np.concatenate : 更多轴合并,比如想要第5轴合并,axis以0开始

如果想要将维度相同,形状相同的矩阵在深度上合并,首先需要对矩阵扩充维度,比如arr_10是3 * 2的矩阵,要扩充成1 * 3 * 2的矩阵 :
np.expand_dims(arr_10,axis = 0)
np.expand_dims(arr_11,axis = 0)
然后用np.concatenate在深度上进行叠加 :
np.concatenate((arr_10,arr_11),arix = 0)
最后得到一个2 * 3 * 2的矩阵

广播机制broadcasting : 方便不同shape下的数组的数学运算

1.两个数组进行加减时,维度不相同的时候要向维度较大的看齐,比如3 *3 *4 + 4,首先用np.expand_dims将4扩充到1 * 1 * 4(在前面扩充,内部做了这个机制)
2.这个就很好理解了,7 * 1 * 8 + 1 * 5 * 1 = 7 * 5 * 8数组

  1. 3 * 3 * 4 + 1 * 1 * 4 3对1 ,4对4因此可以计算
    7 * 2 * 8 + 7 * 5 * 8就不行,因为2*5既没有1,又不相等,就不能计算
案例: 计算:

相关文章

  • 人工智能之数学(四) ------ 矩阵numpy操作

    菜鸟教程 NumPy 教程 一.基本概念 NumPy(Numerical Python) 是 Python 语言的...

  • pandas numpy

    pandas 时间序列操作 python numpy教程 Numpy中矩阵对象(matrix) numpy中的数据...

  • numpy.array()创建数组

    Numpy: 基础的数学计算模块,以矩阵为主,纯数学。 一、语法参数 numpy.array(object, dt...

  • Python下负责数据分析的库

    Numpy: 基础的数学计算模块,以矩阵为主,纯数学。 pandas 是基于 NumPy 的一个 Python 数...

  • 简述Python的Numpy,SciPy和Pandas,Matp

    Numpy: 基础的数学计算模块,以矩阵为主,纯数学。 SciPy: 基于Numpy,提供方法(函数库)直接计算结...

  • 人工智能数学基础----矩阵

    1. 人工智能数学基础----导数2. 人工智能数学基础----矩阵 今天复习矩阵,作为程序员,矩阵在程序中的应用...

  • numpy矩阵操作

    python中矩阵运算要用到numpy库,记录一下常用和用到的函数。 首先要变成一个numpy的array 矩阵换...

  • numpy _= & copy

    本文介绍numpy的矩阵赋值操作和copy操作 Demo.py 结果:

  • 一文搞定Numpy&Pandas

    简单来说,Numpy就是用来进行矩阵计算的,而Pandas则基于Numpy,丰富并简化了Numpy的操作 Nump...

  • numpy -- 基础

    1 Numpy 什么是Numpy数学库,c语言和Python语言混合, NumPy 主要用于大量的维度数组与矩阵运...

网友评论

      本文标题:人工智能之数学(四) ------ 矩阵numpy操作

      本文链接:https://www.haomeiwen.com/subject/xpmadctx.html