zoukankan      html  css  js  c++  java
  • numpy的计算

    ### argmin() 和 argmax() :求矩阵中最小元素和最大元素的索引

    ```python

    import numpy as np

    A = np.arange(2,14).reshape((3,4))

    print(A)

    print(np.argmin(A))

    print(np.argmax(A))

    ```

    [[ 2 3 4 5]

    [ 6 7 8 9]

    [10 11 12 13]]

    0

    11

    ### 求整个矩阵的均值

    ```python

    print(np.mean(A))

    print(A.mean())

    print(np.average(A))

    ```

    7.5

    7.5

    7.5

    ### 求解中位数的函数:

    ```python

    print(np.median(A))

    ```

    7.5

    ### 累加函数:cumsum()

    ```python

    print(np.cumsum(A))

    ```

    [ 2 5 9 14 20 27 35 44 54 65 77 90]

    #### 在cumsum()函数中:生成的每一项矩阵元素均是从原矩阵首项累加到对应项的元素之和。比如元素9,在cumsum()生成的矩阵中序号为3,即原矩阵中2,3,4三个元素的和。

    ### 累差运算函数:diff()

    ```python

    print(np.diff(A))

    ```

    [[1 1 1]

    [1 1 1]

    [1 1 1]]

    #### 该函数计算的便是每一行中后一项与前一项之差。故一个3行4列矩阵通过函数计算得到的矩阵便是3行3列的矩阵。

    ### nonzero()函数:

    ```python

    print(np.nonzero(A))

    ```

    (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))

    #### 这个函数将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵。

    #### 对所有元素进行仿照列表一样的排序操作,但这里的排序函数仍然仅针对每一行进行从小到大排序操作:

    ```python

    import numpy as np

    A = np.arange(14,2, -1).reshape((3,4))

    print(np.sort(A))

    ```

    [[11 12 13 14]

    [ 7 8 9 10]

    [ 3 4 5 6]]

    ### 矩阵的转置有两种表示方法:

    ```python

    print(np.transpose(A))

    print(A.T)

    ```

    [[14 10 6]

    [13 9 5]

    [12 8 4]

    [11 7 3]]

    [[14 10 6]

    [13 9 5]

    [12 8 4]

    [11 7 3]]

    ### clip()函数

    ```python

    print(A)

    print(np.clip(A,5,9))

    ```

    [[14 13 12 11]

    [10 9 8 7]

    [ 6 5 4 3]]

    [[9 9 9 9]

    [9 9 8 7]

    [6 5 5 5]]

    #### 这个函数的格式是clip(Array,Array_min,Array_max),顾名思义,Array指的是将要被执行用的矩阵,而后面的最小值最大值则用于让函数判断矩阵中元素是否有比最小值小的或者比最大值大的元素,并将这些指定的元素转换为最小值或者最大值。

    ## Numpy 索引

    ### 一维索引

    ```python

    import numpy as np

    A = np.arange(3,15)

    print(A)

    print(A[3])

    ```

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

    6

    ```python

    A = np.arange(3,15).reshape((3,4))

    print(A)

    print(A[2])

    ```

    [[ 3 4 5 6]

    [ 7 8 9 10]

    [11 12 13 14]]

    [11 12 13 14]

    ### 二维索引

    ```python

    print(A[1][1])

    print(A[1, 1])

    print(A[1, 1:3])

    ```

    8

    8

    [8 9]

    ```python

    for row in A:

    print(row)

    ```

    [3 4 5 6]

    [ 7 8 9 10]

    [11 12 13 14]

    [ 3 7 11]

    [ 4 8 12]

    [ 5 9 13]

    [ 6 10 14]

    ```python

    for column in A.T:

    print(column)

    ```

    [ 3 7 11]

    [ 4 8 12]

    [ 5 9 13]

    [ 6 10 14]

    ### 抽取指定范围的矩阵

    ```python

    A[0:2,0:2]

    ```

    array([[2, 3],

    [6, 7]])

    ### 抽取行或列的索引不连续,可以把这几个索引放在数组里

    ```python

    A[[0,2], 0:2]

    ```

    array([[ 2, 3],

    [10, 11]])

    ### 迭代输出

    ```python

    import numpy as np

    A = np.arange(3,15).reshape((3,4))

    print(A.flatten())

    for item in A.flat:

    print(item)

    ```

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

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    #### flatten()是一个展开性质的函数,将多维的矩阵进行展开成1行的数列。而flat是一个迭代器,本身是一个object属性。

    ### apply_along_axis(func1d, axis, arr, *args, **kwargs):

    参数:funct1d:聚合函数

    axis:对那条轴进行迭代

    arr:数组

    ### 另一种有选择性抽取数据的方法:条件表达式和布尔运算符

    ```python

    import numpy as np

    n = np.random.random((4,4))

    n <0.5

    n[n<0.5]

    ```

    array([0.4056797 , 0.41886889, 0.41243354, 0.28667628, 0.29777787,

    0.25386625, 0.38528587, 0.39119738, 0.01332086, 0.04075218])

    ### 形状变换

    ```python

    n = np.random.random(12)

    n.shape = (3,4)

    n

    ```

    array([[0.83254777, 0.44032215, 0.20834259, 0.67836786],

    [0.26714159, 0.88024405, 0.86865931, 0.69952975],

    [0.80682802, 0.202754 , 0.56515645, 0.52465079]])

    ### 还原数组

    ```python

    n = n.ravel()

    n

    ```

    array([0.83254777, 0.44032215, 0.20834259, 0.67836786, 0.26714159,

    0.88024405, 0.86865931, 0.69952975, 0.80682802, 0.202754 ,

    0.56515645, 0.52465079])

    ```python

    n.shape = (12)

    n

    ```

    array([0.83254777, 0.44032215, 0.20834259, 0.67836786, 0.26714159,

    0.88024405, 0.86865931, 0.69952975, 0.80682802, 0.202754 ,

    0.56515645, 0.52465079])

    ### 转置

    ```python

    n.shape = (3,4)

    x = n.transpose()

    x

    ```

    array([[0.83254777, 0.26714159, 0.80682802],

    [0.44032215, 0.88024405, 0.202754 ],

    [0.20834259, 0.86865931, 0.56515645],

    [0.67836786, 0.69952975, 0.52465079]])

    秋来凉风起,无限思远人
  • 相关阅读:
    解决:Google代码achartengine曲线代码报错问题(转)
    操作SQLite数据库
    让服务器iis支持.apk文件下载的设置方法
    怎么在手机上查看sqlite db
    Android 3D滑动菜单完全解析,实现推拉门式的立体特效
    android自动更新程序,安装完以后就什么都没有了,没有出现安装成功的界面的问题
    那些年不错的Android开源项目
    PL/SQL Developer 连接新数据库
    Oracle 连接 Visual Studio 的工具
    利用SQLiteOpenHelper来管理SQLite数据库 (转)
  • 原文地址:https://www.cnblogs.com/lalavender/p/10468553.html
Copyright © 2011-2022 走看看