• NumPy基础入门学习


    对于习惯使用了MATLAB的用户而言,学习NumPy这个python工具包付出的成本应该是不大的。


    NumPy的基本的object是多维数组,是一个有同样类型的数字等构成的一张表格,能够通过元组进行索引。本篇主要列出NumPy中最经常使用的一些操作。

    1,ndarray 类型的一些属性

    >>> from numpy import *
    >>> a=array([[1,2,3],[4,5,6]])
    >>> a
    array([[1, 2, 3],
           [4, 5, 6]])
    >>>

    以上给出了怎么样初始化一个NumPy 数组。这个数组的类型,维度,包括元素的个数,元素类型。数据等都能够通过其对应的属性来得到

     #  元素类型    ndarray.dtype
    >>> a.dtype
    dtype('int64')
    >>> 
    

     # 维度        ndarray.shape
    >>> a.shape
    (2, 3)
    

     #包括元素的个数 ndarray.size
    >>> a.size
    6
    


    2。创建自己定义大小的数组。改变数组的shape

    默认系统类型

    >>> a=zeros((3,4))
    >>> a
    array([[ 0.,  0.,  0.,  0.],
           [ 0.,  0.,  0.,  0.],
           [ 0.,  0.,  0.,  0.]])

    初始化数据的类型

    >>> a=ones((5,4),dtype=int64)
    >>> a
    array([[1, 1, 1, 1],
           [1, 1, 1, 1],
           [1, 1, 1, 1],
           [1, 1, 1, 1],
           [1, 1, 1, 1]])
    >>> a.dtype
    dtype('int64')
    


    改变数组的shape               reshape函数

    >>> a=arange(15)
    >>> a
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
    >>> a.reshape((5,3))
    array([[ 0,  1,  2],
           [ 3,  4,  5],
           [ 6,  7,  8],
           [ 9, 10, 11],
           [12, 13, 14]])
    

    技巧:对于reshape这个函数,能够仅仅指定多少行,或者仅仅指定多少列。剩下的工作由这个函数提我们来做。提高操作的灵活性。

    >>> a.reshape((5,:-1))
    array([[ 0,  1,  2],
           [ 3,  4,  5],
           [ 6,  7,  8],
           [ 9, 10, 11],
           [12, 13, 14]])
    >>> a.reshape((-1,5))
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14]])


    3,数组索引


    1)通过指定元组来进行索引

    >>> a=floor(10*random.random((5,4)))
    >>> a
    array([[ 4.,  6.,  4.,  9.],
           [ 4.,  7.,  2.,  1.],
           [ 4.,  9.,  7.,  3.],
           [ 5.,  4.,  6.,  0.],
           [ 4.,  3.,  2.,  9.]])
    >>> a[(1,1)]
    7.0
    >>> a[(3,2)]
    6.0
    

    2)一次索引多个元素

          索引出多行,能够将下标存放在一个array里

    >>> index=array([1,3,4]) #要索引1,3,4行
    >>> a[index]
    array([[ 4.,  7.,  2.,  1.],
           [ 5.,  4.,  6.,  0.],
           [ 4.,  3.,  2.,  9.]])
    
    


    >>> index=array([[1,2],[1,3]])
    >>> b=a[index]
    >>> b
    array([[[ 4.,  7.,  2.,  1.],
            [ 4.,  9.,  7.,  3.]],
    
           [[ 4.,  7.,  2.,  1.],
            [ 5.,  4.,  6.,  0.]]])
    >>> b.shape
    (2, 2, 4)
    

    以上操作都是对一行进行索引的。那么怎么去索引到第几行。第几列呢

    >>> i=array([0,1,2,3])
    >>> j=array([3,2,1,0])
    >>> a[i,j]
    array([ 9.,  2.,  9.,  5.])
    
    返回的是 一个一维矩阵。行存放在i 中。列存放在j中

    如果要将返回的元素存放在2*2的矩阵中


    >>> i=array([[0,1],[2,3]])
    >>> j=array([[3,2],[2,1]])
    >>> a[i,j]
    array([[ 9.,  2.],
           [ 7.,  4.]]

    同一时候还支持 下面几种索引方式。与MATLAB相似

    >>> a[:,1]
    array([ 6.,  7.,  9.,  4.,  3.])
    >>> a[:,3]
    array([ 9.,  1.,  3.,  0.,  9.])
    >>> a[1,:]
    array([ 4.,  7.,  2.,  1.])
    >>> a[:,1:3]
    array([[ 6.,  4.],
           [ 7.,  2.],
           [ 9.,  7.],
           [ 4.,  6.],
           [ 3.,  2.]])

    3,矩阵算术运算

    >>> a
    array([[ 4.,  6.,  4.,  9.],
           [ 4.,  7.,  2.,  1.],
           [ 4.,  9.,  7.,  3.],
           [ 5.,  4.,  6.,  0.],
           [ 4.,  3.,  2.,  9.]])
    >>> a.sum()
    93.0
    >>> a.sum(axis=0) #行相加
    array([ 21.,  29.,  21.,  22.])
    >>> a.sum(axis=1) #列相加
    array([ 23.,  14.,  23.,  15.,  18.])
    >>> a.min()
    0.0
    >>> a.min(axis=0)
    array([ 4.,  3.,  2.,  0.])
    >>> a.min(axis=1)
    array([ 4.,  1.,  3.,  0.,  2.])
    >>> a.max()
    9.0
    >>> a.max(axis=0)
    array([ 5.,  9.,  7.,  9.])
    >>> a.max(axis=1)
    array([ 9.,  7.,  9.,  6.,  9.])
    

    数组之间算术运算

    a+b; a-b



    很多其它可參考:Tentative NumPy Tutorial

  • 相关阅读:
    react-native window下创建Hello(解决创建一路的坑)
    vue2.0 监听滚动 锚点定位
    vue-awesome-swiper 轮播图使用
    vue和react区别
    vuex 管理状态
    vue 解决axios 跨域问题
    判断一个对象是否为空? js
    微信小程序中的自定义组件(components)
    深入理解ES6箭头函数中的this
    vue中组件的data为什么是一个函数
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7015816.html
Copyright © 2020-2023  润新知