zoukankan      html  css  js  c++  java
  • numpy的学习笔记

    本次笔记学习教程出自:https://cs231n.github.io/python-numpy-tutorial/

    Numpy的使用:

    import numpy as np

    1.numpy数组的基本使用和操作:

    import numpy as np
    
    a=np.array([[1,2,3],[4,5,6]])#自定义一个Numpy数组a
    print('array a is 
    '+str(a)+'
     and the shape is '+str(a.shape)+'
     and the type is '+str(type(a)))
    #Prints "
    #array a is 
    #[[1 2 3]
    # [4 5 6]]
    # and the shape is (2, 3)
    # and the type is <class 'numpy.ndarray'>
    #"
    
    #a.shape可以得到数组a的形状
    print(a[0,0],a[0,1],a[1,0])#引用数组具体元素
    a[0,0]=99 #更改数组的元素值的方法和变化列表的方法一样
    print(a)
    
    #创建各种特殊矩阵/数组:
    b=np.zeros((3,2))
    print('b is '+str(b))
    b=np.ones((2,3))
    print('b is '+str(b))
    b=np.full((2,2),7)
    print('b is '+str(b))
    b=np.eye(3)#创建单位矩阵
    print('b is '+str(b))
    b=np.random.random((3,1))#创建随机矩阵,但元素只是在(0,1)之间随机
    print('b is '+str(b))

    2.切片操作:

     
    import numpy as np
    a=np.array([[1,2,3],[4,5,6],[7,8,9]])
    b=a[:2,1:3]#切片,只取[0,2)行和[1,3)列的交集
    print(a)
    print(b)
    c=a[1,1:3]#切出来的只是一行数字,不算是个矩阵
    d=a[1:2,1:3]#切出来的是一个1*2的矩阵
    print(c,c.shape)
    print(d,d.shape)
    
    a=np.array([[1,2],[3,4],[5,6]])
    print(a)
    print(a[[0,1,2],[0,1,0]])#输出a[0,0],a[1,1],a[2,0]
    a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
    b=np.array([0,2,0,1])
    print(a[np.arange(4),b])#np.arange(4)=[0.1.2.3]
    print(a)
    a[np.arange(4),b]+=10
    print(a)

    3.布尔类型索引:

     
    import numpy as np
    #布尔类型数组索引
    a=np.array([[1,2],[3,4],[5,6]])
    bool_idx=(a>3)
    print(bool_idx)
    #prints [[False False]
    #       [False  True]
    #       [ True  True]]
    print(a[bool_idx]) #prints [4 5 6]

    4.基本运算操作等:

     
    import numpy as np
    a=np.array([[1,2],[2,3]])
    print(a.dtype)#显示数组的数据类型
    
    #numpy数组的运算
    b=np.array([[2,3],[4,5]])
    
    #加法
    print(a+b)
    #相当于
    print(np.add(a,b))
    
    #减法
    print(a-b)
    #相当于
    print(np.subtract(a,b))
    
    #乘法,不是矩阵乘法
    print(a*b)
    print(np.multiply(a,b))
    
    #除法
    print(a/b)
    print(np.divide(a,b))
    
    #开方
    print(np.sqrt(a))
    
    #矩阵乘法
    print(a.dot(b))
    print(np.dot(a,b))
    #prints [[10 13]
    #       [16 21]]
    
    print(b.dot(a))
    print(np.dot(b,a))
    #prints [[ 8 13]
    #       [14 23]]

    5.其他方法(sum,转置):

     
    import numpy as np
    print(a)
    #sum运算
    a=np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
    print(np.sum(a))#所有元素相加
    print(np.sum(a,axis=0))#三维数组中的第一个向量上相加
    #prints [[ 6  8]
    #       [10 12]]
    print(np.sum(a,axis=1))#列上相加
    #prints [[ 4  6]
    #       [12 14]]
    
    print(np.sum(a,axis=2))#行上相加
    #prints [[ 3  7]
    #       [11 15]]
    
    #转置矩阵
    print(a.T)

    6.广播,broadcasting:

     
    #Broadcasting
    import numpy as np
    x=np.array([[1,2,3],[4,5,6],[7,8,9]])
    v=np.array([1,0,1])
    y=np.empty_like(x)#y=x
    print(y)
    for i in range(3):
        y[i,:]=x[i,:]+v
    print(y)
    
    a=np.array([1,2,3])
    b=np.array([4,5])
    print(np.reshape(a,(3,1))*b)
    #先使得v从(3,)的shape变成(3,1),然后再和b广播变成shape为(3,2)
    #prints [[ 4  5]
    #       [ 8 10]
    #      [12 15]]
  • 相关阅读:
    python学习笔记(unittest)
    python学习笔记(session)
    python学习笔记(requests)
    jmeter的学习(配置环境)
    Codeforces 576D. Flights for Regular Customers 题解
    Codeforces 1316F. Battalion Strength 题解
    2020年第十一届蓝桥杯省赛J-网络分析(带权并查集)
    第十一届蓝桥杯b组省赛 C.合并检测(内附详细的样例)
    蓝桥杯2020.7月真题走方格(到达终点的不同方案数)(记忆化搜索+DP)
    Codeforces Global Round 11 A. Avoiding Zero(思维构造)
  • 原文地址:https://www.cnblogs.com/SixteenTime/p/13581994.html
Copyright © 2011-2022 走看看