zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python 学习笔记(十三)Python函数(二)
    Python 学习笔记(十三)Python函数(一)
    Python 学习笔记(十二)Python文件和迭代(二)
    tb数据过多用省略号显示
    js,el表达式,<c:if>
    html元素标签时间格式化
    oracle链接报错shared memory realm does not exist
    mysql查找字段在哪个表中
    删除数据库重复数据
    excel使用poi操作。
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7015816.html
Copyright © 2011-2022 走看看