zoukankan      html  css  js  c++  java
  • Python扩展库NumPy快速入门

    NumPy(Numerical Python)是Python一个扩充库。支持维度数组与矩阵运算,提供大量的数学函数库。

    ndarray类 :NumPy中的数组类被称为ndarray

    属性:

    ndarray.ndim表示数组的维度。

    ndarray.shape是一个整型tuple,用来表示数组中的每个维度的大小。例如,一个n行和m列的矩阵,其shape为(n,m)。

    ndarray.size表示数组中元素的个数,其值等于shape中所有整数的乘积

    ndarray.dtype用来描述数组中元素的类型

    ndarray.itemsize用于表示数组中每个元素的字节大小 

    import numpy as np
    a=np.arange(10).reshape(2,5)
    a
    array([[0, 1, 2, 3, 4],
           [5, 6, 7, 8, 9]])
    注意:size=n*m 否则会报错
    a.shape (
    2, 5) a.ndim 2 a.size 10 a.dtype dtype('int32') a.itemsize 4

    数组创建

    直接使用list或者tuple
    import numpy as np a = np.array([1,2,3,4,5,6]) b = np.array((1,2,3,4,5,6)) a array([1, 2, 3, 4, 5, 6]) b array([1, 2, 3, 4, 5, 6])
    传入的参数必须是同一结构,不是同一结构将发生转换

     NumPy还提供了便捷地创建特定数组的方式

       a=np.zeros((3,3))  

    array([[0., 0., 0.],
           [0., 0., 0.],
           [0., 0., 0.]])
    

     a=np.ones([2,4])

    array([[1., 1., 1., 1.],
           [1., 1., 1., 1.]])
    

     c = np.arange(15)

    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
    

    e=np.arange(15).reshape(5,3)

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

     h = np.arange(0,3,0.4)

    array([0. , 0.4, 0.8, 1.2, 1.6, 2. , 2.4, 2.8])
    

     数组的基本操作(加减乘除

       相对应的位置进行加减乘除,这一块很简单,就不多做介绍

      在NumPy中,*用于数组间元素对应的乘法,而不是矩阵乘法,矩阵乘法可以用dot()方法来实现 

    a=np.array([[1,2],[4,5]])
    b=np.array([[0,1],[0,1]])
    a
    array([[1, 2],
           [4, 5]])
    b
    array([[0, 1],
           [0, 1]])
    a*b
    array([[0, 2],
           [0, 5]])
    a.dot(b)
    array([[0, 3],
           [0, 9]])
    

     矩阵乘积小结:

    1. 只有当第一个矩阵的列数等于第二个矩阵的行数,两个矩阵才能相乘

    2.矩阵相乘不满足交换律,AB!=BA

    3.矩阵相乘不满足消去率,例如:AB=AC 且A!=0 不能推出B=C

    ndarray类实现了许多操作数组的一元方法,如求和、求最大值、求最小值等。

     a = np.random.random((2,3))
    求和:a.sum() 

    最小值:a.min()
    最大值:a.max()
    axis = 0表示列操作
    axis = 1表示行操作
     
     
     

     


  • 相关阅读:
    LeetCode 24. Swap Nodes in Pairs (两两交换链表中的节点)
    LeetCode 1041. Robot Bounded In Circle (困于环中的机器人)
    LeetCode 1037. Valid Boomerang (有效的回旋镖)
    LeetCode 1108. Defanging an IP Address (IP 地址无效化)
    LeetCode 704. Binary Search (二分查找)
    LeetCode 744. Find Smallest Letter Greater Than Target (寻找比目标字母大的最小字母)
    LeetCode 852. Peak Index in a Mountain Array (山脉数组的峰顶索引)
    LeetCode 817. Linked List Components (链表组件)
    LeetCode 1019. Next Greater Node In Linked List (链表中的下一个更大节点)
    29. Divide Two Integers
  • 原文地址:https://www.cnblogs.com/wookong/p/11236552.html
Copyright © 2011-2022 走看看