• Py中axis理解【转载】


    转载:https://blog.csdn.net/yaoqi_isee/article/details/77714570

     1.理解

    numpy当中axis的值表示的是这个多维数组维度的下标,比如有一个二维数组a,a的shape是(5,6),也就是说a有5行6列,axis=0表示的就是[5,6]中的第一维,也就是行,axis=1表示的是[5,6]中的第二个维度,也就是列。

    通常numpy里面的一些降维操作(aggregate functions)需要我们指定对应的维度,比如sum函数表示对哪个维度求和,max表示对哪个维度求最大值。通常当我们在这些函数里面指定了axis=n时,那么函数输出的数组当中,原来的第n维就被消除了,比如下面的例子:

    //其实不一定是消除,反正就是那个维发生了变化,增加了或者归为1了。

    # 创建一个矩阵a,a的维度为2行3列
    >>> a = np.array([[1,2,3],[4,5,6]])
    >>> print a
    [[1 2 3]
     [4 5 6]]
    >>> print a.shape
    (2, 3)
    
    # b表示沿着axis=0(行)这条轴取max,得到的结果就是把输入数组的'行'给消除了,2行变1行
    >>> b = a.max(axis=0)
    >>> print b
    [4 5 6]
    >>> print b.shape
    (3,)
    
    # c表示沿着axis=1(列)这条轴取max,得到的结果就是把输入数组的'列'给消除了,3列变1列
    >>> c = a.max(axis=1)
    >>> print c
    [3 6]
    >>> print c.shape
    (2,)

    2.例子

    >>> a = np.array([[1, 1], [2, 2], [3, 3]])
    >>> a
    array([[1, 1],
           [2, 2],
           [3, 3]])
    >>> np.insert(a, 1, 5)
    array([1, 5, 1, 2, 2, 3, 3])
    >>> np.insert(a, 1, 5, axis=1)
    array([[1, 5, 1],
           [2, 5, 2],
           [3, 5, 3]])

    在上例当中,插入时axis=1,即对列数进行变化,最终列数增加1,由原来的[3,2]变为[3,3] 。

    如果axis=0的话,就是对行数进行改变。

    >>> a = np.arange(6).reshape(2,3) + 10
    >>> a
    array([[10, 11, 12],
           [13, 14, 15]])
    >>> np.argmax(a)
    5
    >>> np.argmax(a, axis=0)
    array([1, 1, 1])
    >>> np.argmax(a, axis=1)
    array([2, 2])

    找出最值下标。

    0行1列:

    0:对列操作,结果为行

    1:对行操作,结果为列

    比如要对5000*10的矩阵求每行的最值下标,([5000,10],10变化,即列变化)那么axis=1.

  • 相关阅读:
    第五周总结
    第四周总结
    关于“模仿"和”创新“
    第三周总结
    第九周总结
    第八周总结
    第六周总结
    中国历史上成功的两人合作
    第五周总结
    第四周总结
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/10408443.html
Copyright © 2020-2023  润新知