• numpy学习总结


    numpy用法

    导入:import numpy as np
    生成矩阵:array = np.array([[1,2,3],[4,5,6]])
    矩阵维度:array.ndim
    矩阵形状:array.shape
    矩阵大小:array.size
    矩阵元素类型:array.dtype

    创建array

    a = np.array([1,2,3], dtype=np.int32)
    dtype:指定数据类型
    矩阵维度:创建时方括号的层数代表矩阵的维度

    常用用法

    zero = np.zeros((2, 3)) 生成两行三列全为0的矩阵
    one = np.empty((2, 3)) 生成两行三列全为1的矩阵
    empty = np.empty((3, 2)) 生成三行两列全为接近于0但不是0的矩阵
    e = np.arange(10) 此种用法与python中的range类似
    h = np.arange(10).reshape(2, 4) 重新定义矩阵的形状

    矩阵操作(要求:两个矩阵形状相同)

    arr1:矩阵1
    arr2:矩阵2
    加法:arr1 + arr2 按位相加
    减法:arr1 - arr2 按位相减
    乘法:arr1 * arr2 按位相乘
    求幂:arr1 ** arr2 按位操作
    除法:arr1 / arr2 按位相除
    取余:arr1 % arr2 按位取余
    取整:arr1 // arr2 按位取整
    与数的操作:arr1 + 2 矩阵中的每位都与2操作
    比较操作:arr1 > 3 判断矩阵中那些元素大于3,返回一个布尔型的矩阵

    矩阵运算(根据线性代数中的矩阵操作进行加减乘除)

    arr1:矩阵1
    arr2:矩阵2
    矩阵乘法:np.dot(arr1, arr2)/arr1.dot(arr2)
    转置矩阵:arr1.T/np.transpose(arr1)
    numpy中生成随机数
    arr1 = np.random.random((3, 2)) 生成三行两列从0-1的随机数
    arr2 = np.random.normal(size=(3, 2)) 生成三行两列符合标准正态分布的随机数
    arr3 = np.random.randint((0, 10, size=(3, 2))) 生成三行两列0-10的随机整数
    单个矩阵求和:np.sum(arr1)
    单个矩阵对列求和:np.sum(arr1, axis=0)
    单个矩阵对行求和:np.sum(arr1, axis=1)
    单个矩阵中求最大/最小值:np.max(arr1)/np.min(arr1)
    求某个矩阵中最小值/最大值的索引:np.argmin(arr1)/np.argmax(arr1)
    求矩阵的平均值:np.mean(arr1)/arr1.mean()
    求矩阵中位数:np.median(arr1)
    矩阵开方:np.sqrt(arr1)
    矩阵排序:np.sort(arr1) 对每行进行排序
    np.clip(arr1, 2, 7):对于arr1中的元素小于2就变成2,大于7就变成7

    numpy索引

    a = np.arange(2, 14):与python索引类似,用法可参照python中list用法
    多维矩阵:
    a[i]:表示第i+1行
    a[i][j]:表示第i+1行第j+1列
    a[:,j]:表示第j+1列
    迭代行

    for i in a:
    	print(i)
    

    迭代列

    for i in a.T:
    	print(i)
    

    迭代元素

    for i in a.flat:
    	print(i)
    

    array合并

    垂直合并:np.vstack((arr1, arr2))
    水平合并:np.hstack((arr1, arr2))
    np.concatenate((arr1, arr2),axis=0):可自主指定合并方式,合并的array维度要相同,参数axis=0时纵向合并,参数axis=1时横向合并。
    一维array增加一个维度:np.newaxis
    实例:

    arr1 = np.arange(1,4)
    arr1_2 = arr1[:,np.newaxis]
    arr1_2变成三行一列
    arr1_3 = arr1[np.newaxis,:]
    arr1_3变成一行三列
    

    np.atleast_2d(arr)/np.atleast_3d(arr):判断arr是否最少为二维/三维array,如果不是转换成arr[np.newaxis,:]这种形式

    array分割

    np.split(arr, 2, axis=1):按列分割,分成两份
    np.split(arr, 3, axis=0):按行分割,分成三份
    np.array_split(arr, 2, axis=1):按列分割,分成两份,不等分割
    np.array_split(arr, 3, axis=0):按行分割,分成三份,不等分割
    np.vsplit(arr, 3):按行分割
    np.hsplit(arr, 2):按列分割

    numpy的浅拷贝和深拷贝

    浅拷贝:类似值引用,指向同一块内存地址,只要一个改变大家都会改变
    深拷贝:arr.copy() 重新开辟一块内存空间,几者之间互不影响

  • 相关阅读:
    python面试的100题(12)
    python面试的100题(11)
    python面试的100题(10)
    python面试的100题(9)
    python面试的100题(8)
    python面试的100题(7)
    纯js做鼠标拖拽物体并记录鼠标位置的效果(附pageX clientX offsetX screenX的区别图)
    利用function函数做一个简易计算器(getElementById)
    JavaScript中的函数function
    初识JavaScript
  • 原文地址:https://www.cnblogs.com/miao-study/p/11716595.html
Copyright © 2020-2023  润新知