zoukankan      html  css  js  c++  java
  • numpy常用函数

    stack(), vstack(), hstack()

    l  stack():

    import numpy as np

    a=[[1,2,3],

       [4,5,6]]

    print("列表a如下:")

    print(a)

    c=np.stack(a,axis=0)

    print(c)

    c=np.stack(a,axis=1)

    print(c)

    >>> 

    列表a如下:
    [[1, 2, 3], [4, 5, 6]]
     
    [[1 2 3]
     [4 5 6]]
     
     [[1 4]
      [2 5]
      [3 6]]

    l  Hstack():

    a=[1,2,3], b=[4,5,6]

    print(np.hstack((a,b)))

    [1 2 3 4 5 6]

    l  Vstack():

    print(np.vstack((a,b)))

    [[1 2 3]
     [4 5 6]]

    :或则 -1 的用法

    b1=[[[0 1 2]
          [ 3 4 5]]
     
     [[ 6 7 8]
          [ 9 10 11]]
     
     [[12 13 14]
          [15 16 17]]
     
     [[18 19 20]
      [21 22 23]]]

    # 从最外层的维度分解出最后一个模块

    b1[-1] =
     [[18 19 20]
     [21 22 23]]

    # 写在最后一个维度的":"没有实质性作用,此处表示的意思和b1[-1]相同

    b1[-1:]= b1[-1]

    # 表示取出最外层的所有维度后每一个子模块中选择最后一个子模块

    b1[:, -1]=

    [[ 3 4 5]
     [ 9 10 11]
     [15 16 17]
     [21 22 23]]

    # 表示取最里层维度的最后一个元素重新组成新的元组

    b1[:, :, -1]=

    [[ 2 5]
       [ 8 11]
       [14 17]
     [20 23]]

    Sum()函数,mean()函数

    c = [[0, 2, 1]

    [3, 5, 6]

    [0, 1, 1]]

    print (c.mean())

    print (c.mean(axis=0))

    print (c.mean(axis=1))

    2.11111111111
    [ 1.   2.66666667 2.66666667]
    [ 1.   4.66666667 0.66666667]

    Tile()函数

    tile英文单词意思:拼贴。tile(A, n)功能:将数组A重复n次,构成一个新的数组。

    A的类型:array, list, tuple, dict, matrix,int, string, float,bool

    n的类型: tuple,list, dict, array, antibook,不可以是float, string, matrix

    np.tile(2, [3,3])

    array([[2, 2, 2],
          [2, 2, 2],
          [2, 2, 2]])

    argsort()方法

    argsort(a):对数组或元组a进行升序排序, 返回的是升序之后的各个元素在原来a未升序之前的下标,即返回升序之后对应的下标数组

    a = [2,-1,6,9,3,1]

    #升序排列

    print (np.argsort(a))

    #降序排列,添加一个负号,并且a必须是array类型

    print (np.argsort(-np.array(a)))

    [1 5 0 4 2 3]
    [3 2 4 0 5 1]

    np.random

    l  np.random.rand(2,3) 生成0-1间的随机数

    l  np.random.randint(low,high,size),生成low到high间的整数

    l  np.random.random(size=[])生成0到1间的随机数,与np.random.rand()相同

    l  np.random.randn(2,4)生成均值为0,方差为1的标准正太分布

    l  np.random.choice()

    numpy.random.choice(a, size=None, replace=True, p=None)

    a:一维数组或者int型变量,如果是数组,就按照里面的范围来进行采样,如果是单个变量,则采用np.arange(a)的形式

    size : int 或者 tuple of ints, 可选参数 

    决定了输出的shape. 如果给定的是, (m, n, k), 那么 m * n * k 个采样点将会被采样. 默认为零,也就是只有一个采样点会被采样回来。

    replace : 布尔参数,可选参数 决定采样中是否有重复值

    p :一维数组参数,可选参数 

    对应着a中每个采样点的概率分布,如果没有标出,则使用标准分布。

    np.random.choice(5,size=(2,3),replace=True)

    array([[4, 0, 4],
           [2, 3, 4]])

    revel()和flatten()

    均是将多维降为1维

    np.flatten()返回一份拷贝,对拷贝所做修改不会影响原始矩阵,而np.ravel()返回的是视图,修改时会影响原始矩阵

    import numpy as np

    x=np.array([[1,2],[3,4]])

    # flattenh函数和ravel函数在降维时默认是行序优先

    x.flatten()

    x.ravel()

    array ([1, 2, 3, 4])

    # 传入'F'参数表示列序优先

    x.flatten('F')

    #reshape函数当参数只有一个-1时表示将数组降为一维

    x.reshape(-1)

    np.concatenate

    a = np.array([[1, 2], [3, 4]])

    b = np.array([[5, 6]])

    np.concatenate((a, b), axis=0)

    Out[25]:

    array([ [1, 2],

          [3, 4],

          [5, 6]])

    矩阵的广播

    Arange(1,11) + arange(0,10)[ : np.newaxis]可以得到10x10 Hilbert matrix

    array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10],

           [ 2,  3,  4,  5,  6,  7,  8,  9, 10, 11],

           [ 3,  4,  5,  6,  7,  8,  9, 10, 11, 12],

           [ 4,  5,  6,  7,  8,  9, 10, 11, 12, 13],

           [ 5,  6,  7,  8,  9, 10, 11, 12, 13, 14],

           [ 6,  7,  8,  9, 10, 11, 12, 13, 14, 15],

           [ 7,  8,  9, 10, 11, 12, 13, 14, 15, 16],

           [ 8,  9, 10, 11, 12, 13, 14, 15, 16, 17],

           [ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],

           [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]])

  • 相关阅读:
    pat03-树1. 二分法求多项式单根(20)
    pat05-图1. List Components (25)
    pat06-图4. Saving James Bond
    pat05-图3. 六度空间 (30)
    pat05-图2. Saving James Bond
    pat04-树9. Path in a Heap (25)
    pat04-树8. Complete Binary Search Tree (30)
    pat04-树7. Search in a Binary Search Tree (25)
    pat04-树5. File Transfer (25)
    Two Sum
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10032007.html
Copyright © 2011-2022 走看看