zoukankan      html  css  js  c++  java
  • Numpy基础

    引子

    """
    Numpy提供数组和矢量运算
    ndarray:可以存储单一数据类型的多维数组
    ufunc:对数组进行处理的函数
    用于读写磁盘数据的工具以及用于操作内存映射文件的工具
    线性代数,随机数生成傅里叶变换的工具
    """
    import numpy as np
    data=np.array([[0.9526,-0.246,-0.8856],[0.5639,0.2379,0.9104]])
    print(data*10)
    #ndarray是一个通用的数据多维容器,即所有的数据元素必须是相同的元素
    #使用shape函数可以查看数组各维度的大小
    print(data.shape)
    #应用dtype查看数据类型
    print(data.dtype)

    创建ndarray数组

    # -*- coding: utf-8 -*-
    """
    Created on Sat Jul 27 11:05:25 2019
    
    @author: gao
    """
    
    #创建ndarray
    #使用narray函数
    import numpy as np
    data1=[6,7,8,0,1]#创建列表
    arr1=np.array(data1)
    print(arr1)
    #使用嵌套序列创建多维数组
    data2=[[1,2,3,4],[5,6,7,8]]
    arr2=np.array(data2)
    print(arr2)
    #array函数会在创建数组时推断出一个比较合适的数据类型。并保存在dtype对象中,也可以显示指定
    print("arr1:{0} arr2:{1}".format(arr1.dtype,arr2.dtype))
    #使用函数创建数组 zeros()和ones()
    print(np.zeros(10))
    print(np.zeros((3,6)))
    print(np.empty((2,2)))

    numpy数据类型~~~dtype

    import numpy as np
    arr1=np.array([1,2,3,4],dtype=np.float64)
    print(arr1)

    import numpy as np
    arr1=np.array([1,2,3,4],dtype=np.float64)
    print(arr1)
    print(arr1.dtype)
    #使用astype函数显式更改dtype
    a=arr1.astype(np.int32)
    print(a)
    print(a.dtype)
    print(arr1)
    #其中arr1类型并没有改变,只是更改了a的

    数组的切片是原始数据的视图,不会复制数据,在视图上更改任何数据就会影响源数据

    数组和标量之间的运算

    import numpy as np
    arr=np.array([[1,2,3],[4,5,6]])
    print(arr)
    print(arr*arr)
    print(arr**0.5)
    print(1/arr)

    索引和切片

    import numpy as np
    arr=np.arange(10)
    print(arr)
    #索引,数组元素的索引从0开始
    print(arr[5])
    #切片
    print(arr[5:8])
    arr[5:8]=12
    print(arr)
    #更改视图源数据也会改变
    #二维数组中索引位置上的元素不再是标量而是一维数组
    #同理三维数组中索引位置上是二维数组
    arr1=np.array([[1,2,3],[4,5,6],[7,8,9]])
    print(arr1)
    print(arr1[0])
    print(arr1[0][0])
    #上语句的等价语句
    print(arr1[0,0])
    #切片索引
    #通过切片访问元素,通常返回一个数组
    #布尔型索引
    #花式索引

    通用函数ufunc

    通用函数是一种对ndarray中的数据执行元素级运算的函数。

     利用数组进行数据处理

    使用函数meshgrid()接受两个一维数组,并产生两个二维矩阵

    import numpy as np
    import matplotlib.pyplot as pl
    x=np.arange(0,1,0.1)
    y=np.arange(0,1,0.1)
    xs,ys=np.meshgrid(x,y)
    z=xs**2+ys**2
    print(z)
    pl.imshow(z,cmap=pl.cm.gray)

    将条件逻辑表述为数组

    numpy.where函数是一个三元表达式 x if condition else y 的矢量化版本。

    import numpy as np
    x=np.array([1.1,1.2,1.3,1.4,1.5])
    y=np.array([2.1,2.2,2.3,2.4,2.5])
    cond=np.array([True,False,True,True,False])
    print(np.where(cond,x,y))

    数学和统计方法

    用于数据的文件输入和输出

    以二进制格式保存到磁盘

    np.save

    np.load

    np.savez

    存取文本文件

    np.loadtxt('',delimiter=',')

    线性代数

     

     随机数的生成

     可以使用python内置模块random中normal产生一个标准正态分布的数组

     

  • 相关阅读:
    .net操作cookies
    sqlserver 自增列清零
    数据库之mysql视图、触发器、事务、存储过程、函数等相关内容-47
    知识补充之面向对象魔法方法及mysql等相关内容
    数据库之mysql多表查询(子查询)以及pymysql等相关内容-46
    数据库之mysql多表查询(连表)以及pymysql等相关内容-45
    数据库之mysql约束条件、表关系、记录操作等相关内容-44
    数据库之mysq修改表、表字段类型等相关内容-43
    数据库之mysql基础等相关内容-42
    并发编程之基于协程的高并发服务端、面向对象回顾等相关内容-41
  • 原文地址:https://www.cnblogs.com/gaochunhui/p/11700633.html
Copyright © 2011-2022 走看看