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产生一个标准正态分布的数组

     

  • 相关阅读:
    正则表达式
    小弟新从csdn搬迁到博客园,欢迎大家关注
    做完牛腩新闻发布系统之后的收获(牛腩总结)
    ValidateRequest="false" 无效
    sql server小技巧-自动添加时间与主键自增长
    css初接触
    Spark的Rpct模块的学习
    插入排序
    选择排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/gaochunhui/p/11700633.html
Copyright © 2011-2022 走看看