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]])

  • 相关阅读:
    【转】CUDA5/CentOS6.4
    【转】centos 6.4 samba 安装配置
    【转】Install MATLAB 2013a on CentOS 6.4 x64 with mode silent
    【转】Getting xrdp to work on CentOS 6.4
    【VLFeat】使用matlab版本计算HOG
    Unofficial Windows Binaries for Python Extension Packages
    March 06th, 2018 Week 10th Tuesday
    March 05th, 2018 Week 10th Monday
    March 04th, 2018 Week 10th Sunday
    March 03rd, 2018 Week 9th Saturday
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10032007.html
Copyright © 2011-2022 走看看