• numpy.md---张云粮-2020-01-20


    import random
    import time
    import numpy as np
    a = []
    for i in range(100000000):
    	a.append(random.random())
    t1 = time.time()
    sum1 = sum(a)
    t2 = time.time()
    
    b = np.array(a)
    t4 = time.time()
    sum2 = np.sum(b)
    t5 = time.time()
    print(t2-t1, t5-t4)
    

    对比python自带求和函数和numpy的消耗的时间

    numpy:

    强大的N维数组对象

    支持大量的数据运算

    众多机器学习框架的基础库(Scipy/Pandas/sklearn/Tensorflow)

    numpy快速的原因:

    1579254688887

    array默认的创建方式为“C-type” 以row为主在内存中排列

    指定为“Fortran”,以column为主在内存中排列

    2.支持并行化运算,即向量化运算

    Numpy提供了一个N维数组类型的ndarray,描述了相同类型“items"的集合

    每个items占用相同大小的内存块;每个item由单独数据类型对象指定的,可以为基本的类型

    整数、浮点数等待,也可以为数据类型对象,表示数据结构

    3.属性

    1579255352292

    a = np.array([[1,2,3],[4,5,6]])
    b = np.array([1,2,3,4])
    c = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])
    
    # 类型,大小,字节数
    a.dtype # dtype('int64')
    a.size # 元素的个数 6
    a.nbytes # 总字节数 48
    a.itemsize # 一个元素的长度
    
    a.shape
    b.shape
    c.shape
    
    
    

    数字的类型有:np.bool (布尔类型)

    np.int8 np.int32 np.int64(整数)

    np.uint8 np.uint16 np.unit32...(无符号数)

    np.float16 np.float32 np.float64

    np.complex64 np.complex128 复数

    np.object_ python对象 np.sting_ 字符串 np.unicode_ unicode类型

    a = np.array([[1,2,3],[4,5,6]], dtype=np.float32)
     a.dtype
     
    
    arr = np.array(['python','tensorflow','scikit-learn','numpy'],dtype = np.string_)
    arr.dtype
    
    # 自定义数据类型
    mytype = np.dtype([('name', np.string_, 10), ('height', np.float64)])
    arr = np.array([('Sarah', (8.0)), ('John', (6.0))], dtype=mytype)
    arr
    arr[0]['name']
    

    1579403062977

    随机生成500个股票两年的交易日涨幅数据

    创建一个符合正态分布的500个股票,504天的涨跌情况

    # 均值/标准差/维度
    stock_day_rise = np.random.normal(0, 1, (500,504))
    # 获取第一个股票的前10个交易日的涨跌幅度
    stock_day_rise[0, 0:10]
    # 行列转换
    stock_day_rise.reshape([504, 500])
    # 修改类型
    stock_day_rise.reshape([504, 500]).astype(np.int32)
    # 转置
    stock_day_rise.T
    # 三元运算符 np.where
    np.where(np.logical_and(temp > 0.5, temp < 1), 1, 0)
    

    广播机制

    数组之间运算,它们的shape在以下任意满足一个条件下可以进行数学运算:

    1、维度相等 2、shape中,相对应的地方为1

    1579404261602

    矩阵(二维数组)

    np.mat()

    矩阵乘法

    • mp.matmul 机制

    (m行,n列)×(n行,L列)=(m行,L列)

    a = np.array([[80,86],
    [82,80],
    [85,78],
    [90,90],
    [86,82],
    [82,90],
    [78,80],
    [92,94]])
    b = np.array([[0.7],[0.3]])
    
    np.matmul(a, b)
    

    我们需要工具去获取,但是Numpy其实并不适合IO操作,这是Numpy不方便的地方。

  • 相关阅读:
    MYSQL学习笔记——数据类型
    MYSQL学习笔记——常用语句
    MYSQL学习笔记——基本语法
    Java虚拟机——类加载机制
    Java虚拟机——Class类文件结构
    Tmux
    nginx 更新提示端口占用的解决办法
    fcitx 无法启动
    E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
    清除浮动
  • 原文地址:https://www.cnblogs.com/niaocaizhou/p/12219128.html
Copyright © 2020-2023  润新知