数据分析 numpy数组_06 字节交换,副本和视图、NumPy 矩阵库(Matrix)、NumPy IO 、

时间:2019-12-09 20:15:02   收藏:0   阅读:61

NumPy 字节交换

  大端模式:指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放。

  小端模式:指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。

  numpy.ndarray.byteswap() 函数将 ndarray 中每个元素中的字节进行大小端转换

  技术分享图片

NumPy 副本和视图

  副本是一个数据的完整的拷贝,如果我们对副本进行修改,它不会影响到原始数据,物理内存不在同一位置。

  视图是数据的一个别称或引用,通过该别称或引用亦便可访问、操作原有数据,但原有数据不会产生拷贝。如果我们对视图进行修改,它会影响到原始数据,物理内存在同一位置???

视图一般发生在:

副本一般发生在:

赋值  

  a = b,访问a是使用原始数组b的相同id()来访问,b数组的任何变化都反映在a数组上。

NumPy 矩阵库(Matrix)

  import numpy.matlib中的函数;matlib.empty()、numpy.matlib.zeros()、numpy.matlib.ones()、

  numpy.matlib.eye(n, M,k, dtype)返回一个矩阵,对角线元素为 1,其他位置为零。

  numpy.matlib.identity(5, dtype = float),给定大小的单位矩阵,单位矩阵是个方阵

  numpy.matlib.rand(3, 3) 函数创建一个给定大小的矩阵,数据是随机填充  

实例讲解numpy.matlib.eye()中的属性 k

import numpy.matlib
import numpy as np

print(np.matlib.eye(n=3, M=4, k=1, dtype=float))

技术分享图片

NumPy 线性代数

NumPy 提供了线性代数函数库 linalg。

函数描述
dot 两个数组的点积,即元素对应相乘。一维对应内机inner;二维对应矩阵的乘法运算
vdot 两个向量的点积,展开乘积的和
inner 两个数组的内积,‘行行相乘’
matmul 两个数组的矩阵积,二维数组就是矩阵的乘法运算,一维和二维,三维和二维通过广播实现矩阵的乘法。
determinant 数组的行列式,numpy.linalg.det()计算输入矩阵的行列式。
solve 求解线性矩阵方程,numpy.linalg.solve() 函数给出了矩阵形式的线性方程的解。
inv 计算矩阵的乘法逆矩阵,numpy.linalg.inv() 函数计算矩阵的乘法逆矩阵。

笔记:

  1、numpy.matmul 函数返回两个数组的矩阵乘积。 虽然它返回二维数组的正常乘积,但如果任一参数的维数大于2,参数为N维,该参数是一些矩阵(最后两个维数为矩阵维数)的stack,也就是进行矩阵运算运算,并进行相应广播(四维是怎么样的?????)。另一方面,如果任一参数是一维数组,则通过在其维度上附加 1 来将其提升为矩阵,并在乘法之后被去除。对于二维数组,它就是矩阵乘法。

  2、NumPy 中对 array 使用 multiply()* 操作符并不是矩阵乘法,两个是‘element-wise’,正确的用法是 dot()matmul(),或者对 matrix 使用 *

  3、nxn维矩阵的行列式怎么求?怎么由定义的余子式,代数余子式,利用定义任意一行(列)中的每一个元素和其代数余子式的乘积的和就是nxn维矩阵的行列式推出其他计算方法的来源呢???

NumPy IO 

常用的 IO 函数有:

 

原文:https://www.cnblogs.com/yinminbo/p/11442619.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!