zoukankan      html  css  js  c++  java
  • numpy 基本使用1

    Numpy是一个非常强大的库,具有大量线性代数以及大规模科学计算的方法。

    #-*- coding:utf-8 -*-
    import numpy as np
    
    #Numpy生成一维数组
    a=np.array([1,2,3])
    print type(a)
    print a.shape
    print a[0],a[1],a[2]
    a[0]=5
    print a
    print '-'*100
    # 输出
    # <type 'numpy.ndarray'>
    # (3L,)
    # 1 2 3
    # [5 2 3]
    
    #Numpy生成二维数组
    b=np.array([[1,2,3],[4,5,6]])
    print b
    print b.shape
    print b[0,0],b[0,1],b[1,0]
    print '-'*100
    # 输出
    # [[1 2 3]
    #  [4 5 6]]
    # (2L, 3L)
    # 1 2 4
    
    #numpy创建数组
    a=np.zeros((2,2))#创建2x2的全0数组
    print a
    b=np.ones((1,2))#创建1x2的全1数组
    print b
    c=np.full((2,2),7)#创建2x2的全为7的数组
    print c
    d=np.eye(2)#创建单位数组
    print d
    e=np.random.random((2,2))#创建2x2的随机数组
    print e
    print '-'*100
    # 输出
    # [[ 0.  0.]
    #  [ 0.  0.]]
    # [[ 1.  1.]]
    # [[7 7]
    #  [7 7]]
    # [[ 1.  0.]
    #  [ 0.  1.]]
    # [[ 0.22054647  0.57186555]
    #  [ 0.79464255  0.90896572]]
    
    #numpy的多种访问数组的方法
    a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
    b = a[:2, 1:3]#0,1行 1,2列
    print b
    print a[0, 1]#第0行 第1列
    b[0, 0] = 77
    print a[0, 1]
    print '-'*100
    # 输出
    # [[2 3]
    #  [6 7]]
    # 2
    # 77
    
    a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
    row_r1 = a[1, :]#取第二行,4列
    row_r2 = a[1:2, :]#取第二行,1行X4列
    print row_r1, row_r1.shape
    print row_r2, row_r2.shape
    print '-'*100
    # 输出
    # [5 6 7 8] (4L,)
    # [[5 6 7 8]] (1L, 4L)
    
    col_r1 = a[:, 1] #取第二列,3列
    col_r2 = a[:, 1:2]#取第二列,3行X1列
    print col_r1, col_r1.shape
    print col_r2, col_r2.shape
    print '-'*100
    # 输出
    # [ 2  6 10] (3L,)
    # [[ 2]
    #  [ 6]
    #  [10]] (3L, 1L)
    
    a = np.array([[1,2], [3, 4], [5, 6]])
    print a[[0, 1, 2], [0, 1, 0]]  #输出a[0,0] a[1,1] a[2,0]
    print np.array([a[0, 0], a[1, 1], a[2, 0]])
    print '-'*100
    # 输出
    # [1 4 5]
    # [1 4 5]
    
    a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
    print a
    b = np.array([0, 2, 0, 1])
    print a[np.arange(4), b]#输出a[0,0] a[1,2] a[2,0] a[3,1]
    a[np.arange(4), b] += 10
    print a
    print '-'*100
    # 输出
    # [[ 1  2  3]
    #  [ 4  5  6]
    #  [ 7  8  9]
    #  [10 11 12]]
    # [ 1  6  7 11]
    # [[11  2  3]
    #  [ 4  5 16]
    #  [17  8  9]
    #  [10 21 12]]
    
    a = np.array([[1,2], [3, 4], [5, 6]])
    bool_idx = (a > 2)  #当a大于2时为True,否则为False
    print bool_idx
    print a[bool_idx] #true输出,false不输出
    print a[a > 2] #符合a>2时输出
    print '-'*100
    # 输出
    # [[False False]
    #  [ True  True]
    #  [ True  True]]
    # [3 4 5 6]
    # [3 4 5 6]
    
    x = np.array([1, 2])
    print x.dtype
    x = np.array([1.0, 2.0])
    print x.dtype
    x = np.array([1, 2], dtype=np.int64)
    print x.dtype
    print '-'*100
    # 输出
    # int32
    # float64
    # int64
    
    x = np.array([[1,2],[3,4]], dtype=np.float64)
    y = np.array([[5,6],[7,8]], dtype=np.float64)
    print x + y
    print np.add(x, y)
    print x - y
    print np.subtract(x, y)
    print x * y
    print np.multiply(x, y)
    print x / y
    print np.divide(x, y)
    print np.sqrt(x)
    print '-'*100
    # 输出
    # [[  6.   8.]
    #  [ 10.  12.]]
    # [[  6.   8.]
    #  [ 10.  12.]]
    # [[-4. -4.]
    #  [-4. -4.]]
    # [[-4. -4.]
    #  [-4. -4.]]
    # [[  5.  12.]
    #  [ 21.  32.]]
    # [[  5.  12.]
    #  [ 21.  32.]]
    # [[ 0.2         0.33333333]
    #  [ 0.42857143  0.5       ]]
    # [[ 0.2         0.33333333]
    #  [ 0.42857143  0.5       ]]
    # [[ 1.          1.41421356]
    #  [ 1.73205081  2.        ]]
    
    x = np.array([[1,2],[3,4]])
    y = np.array([[5,6],[7,8]])
    v = np.array([9,10])
    w = np.array([11, 12])
    print v.dot(w)
    print np.dot(v, w)#9x11+10x12
    print x.dot(v)
    print np.dot(x, v)
    print x.dot(y)#矩阵X x 矩阵Y
    print np.dot(x, y)
    print '-'*100
    # 输出
    # 219
    # 219
    # [29 67]
    # [29 67]
    # [[19 22]
    #  [43 50]]
    # [[19 22]
    #  [43 50]]
    
    x = np.array([[1,2],[3,4]])
    print np.sum(x)
    print np.sum(x, axis=0)#行相加
    print np.sum(x, axis=1)#列相加
    print '-'*100
    # 输出
    # 10
    # [4 6]
    # [3 7]
    
    #矩阵的逆
    x = np.array([[1,2], [3,4]])
    print x
    print x.T
    v = np.array([1,2,3])
    print v
    print v.T
    print '-'*100
    # 输出
    # [[1 2]
    #  [3 4]]
    # [[1 3]
    #  [2 4]]
    # [1 2 3]
    # [1 2 3]
    
    #广播Broadcasting
    x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])
    v = np.array([1, 0, 1])
    y = np.empty_like(x)
    for i in range(4):
        y[i, :] = x[i, :] + v#每行与v相加
    print y
    
    y = x + v
    print y
    
    vv = np.tile(v, (4, 1))
    print vv
    y = x + vv
    print y
    print '-'*100
    # 输出
    # [[ 2  2  4]
    #  [ 5  5  7]
    #  [ 8  8 10]
    #  [11 11 13]]
    # [[ 2  2  4]
    #  [ 5  5  7]
    #  [ 8  8 10]
    #  [11 11 13]]
    # [[1 0 1]
    #  [1 0 1]
    #  [1 0 1]
    #  [1 0 1]]
    # [[ 2  2  4]
    #  [ 5  5  7]
    #  [ 8  8 10]
    #  [11 11 13]]
    
    v = np.array([1,2,3])
    w = np.array([4,5])
    print np.reshape(v, (3, 1))#将1行x3列的v转换成3行x1列矩阵
    print np.reshape(v, (3, 1)) * w
    x = np.array([[1,2,3], [4,5,6]])
    print x + v
    print (x.T + w).T
    print x + np.reshape(w, (2, 1))
    print x * 2
    # 输出
    # [[1]
    #  [2]
    #  [3]]
    # [[ 4  5]
    #  [ 8 10]
    #  [12 15]]
    # [[2 4 6]
    #  [5 7 9]]
    # [[ 5  6  7]
    #  [ 9 10 11]]
    # [[ 5  6  7]
    #  [ 9 10 11]]
    # [[ 2  4  6]
    #  [ 8 10 12]]
  • 相关阅读:
    Dockerfile命令详解
    LXC与Docker Containers的区别
    CSP-S2019游记
    T3
    %%%%%%%%%%%%%%%%
    神炎皇 数学
    2019.9.27
    征途堆积出友情的永恒「堆优化dp」
    星空[好题][题意转化]
    分组[测试点分支+二分图判定]
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/7889303.html
Copyright © 2011-2022 走看看