zoukankan      html  css  js  c++  java
  • numpy中min和max函数axis详细介绍

    min和max函数分别取最小,最大数,下面以介绍min为主。

    当axis=None时,返回ndarray数组中最小或最大的数;
    举例说明
    # 不指定axis,表示从所有维度中找出最小的数据
    arr1 = np.array([[1, 5, 3], [4, 2, 6]])
    print(np.min(arr1)) # 1

    当指定axis时,axis的范围为ndarray的维度范围,可以利用shape函数获取ndrray的维度
    举例说明
    arr1 = np.array([[1, 5, 3], [4, 2, 6]])
    print(arr1.shape) # (2,3)
    返回结果为(2,3),是一个二维数组,说明axis只能取0或1

    下面分别介绍当ndarray为二维,三维,四维时axis的取值和最终结果

    #二维
    arr1 = np.array([[1, 5, 3], [4, 2, 6]])
    #首先先判断出数组的shape值
    print(arr1.shape) # (2,3)

    #当axis=0时,min的结果返回(3)
    #当axis=1时,min的结果返回(2)
    print(np.min(arr1, axis=0).shape,end="axis=0 ")
    # (3)
    print(np.min(arr1, axis=1),end="axis=1 ")
    # (2)

    #三维
    arr1 = np.array([[[1, 2, 3], [4, 5, 6]], [[2, 3, 4], [3, 65, 1]], [[1, 33, 2], [44, 55, 66]],[[21, 12, 17], [3, 11, 43]]])
    print(arr1.shape) #(4,2,3)
    print(np.min(arr1, axis=0).shape, end="axis=0 ") # (2,3)

    print(np.min(arr1, axis=1).shape, end="axis=1 ") # (4,3)

    print(np.min(arr1, axis=2).shape, end="axis=2 ") # (4,2)


    总结:当axis=k时,维度为n的(n1,n2,n3,...nn-1,nn)数组,min后的结果维度为(n1,n2,n3,...nk-1,nk+1,...,nn-1,nn)

    各维度的值如何比对,取值

    #三维
    arr1 = np.array([[[1, 2, 3], [4, 5, 6]], [[2, 3, 4], [3, 65, 1]], [[1, 33, 2], [44, 55, 66]],[[21, 12, 17], [3, 11, 43]]])
    print(arr1)

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

    [[ 2 3 4]
    [ 3 65 1]]

    [[ 1 33 2]
    [44 55 66]]

    [[21 12 17]
    [ 3 11 43]]]

    print(np.min(arr1, axis=0), end="axis=0 ") 
    先根据上面的推算,写出维度格式
    [[x1 x2 x3]
    [x4 x5 x6]]
    再比对取值:

    [x1,x2,x3]从[1 2 3],[2 3 4],[1 33 2],[21 12 17]中取各项中最小值
    x1=1,x2=2,x3=2
    [x4 x5 x6]从[4 5 6],[3 65 1],[44 55 66],[3 11 43]中取各项中最小值
    x4=3,x5=5,x6=1
    最后结果为

    [[1 2 2]

    [3 5 1]]

    print(np.min(arr1, axis=1), end="axis=1 ") 

    写出维度格式

    [[x1 x2 x3]

    [x4 x5 x6]

    [x7 x8 x9]

    [x10 x11 x12]]

    再比对取值:

    [x1,x2,x3]从[1 2 3],[4 5 6]中取各项中最小值

    x1=1,x2=2,x3=3

    [x4,x5,x6]从[2 3 4],[3 65 1]中取各项中最小值

    x4=2,x5=3,x6=1

    [x7,x8,x9]从[1 33 2],[44 55 66]中取各项中最小值

    x7=1,x8=33,x9=2

    [x10,x11,x12]从[21 12 17],[3 11 43]中取各项中最小值

    x10=3,x11=11,x9=17

    最后结果为

    [[ 1 2 3]
    [ 2 3 1]
    [ 1 33 2]
    [ 3 11 17]]

    print(np.min(arr1, axis=2), end="axis=2 ") 

    写出维度格式

    [[x1 x2]

    [x3 x4]

    [x5 x6]

    [x7 x8]]

    再比对取值:

    [x1,x2]从[1 2 3],[4 5 6]中取各项中最小值

    x1=1,x2=4

    [x3,x4]从[2 3 4],[3 65 1]中取各项中最小值

    x3=2,x4=1

    [x5,x6]从[1 33 2],[44 55 66]中取各项中最小值

    x5=1,x5=44

    [x7,x8]从[21 12 17],[3 11 43]中取各项中最小值

    x7=12,x8=3

    最后结果为

    [[ 1 4]
    [ 2 1]
    [ 1 44]
    [12 3]]

    以上就介绍完了,下面再以max函数介绍一个四维数组

    # 四维
    arr1 = np.array([[[[1, 2, 3], [4, 5, 6]], [[2, 3, 4], [3, 65, 1]], [[1, 33, 2], [44, 55, 66]],[[21, 12, 17], [3, 11, 43]]],[[[1, 2, 3], [4, 5, 6]], [[3, 1, 2], [3, 5, 1]], [[1, 3, 2], [4, 5, 7]],[[3, 5, 6], [7, 2, 8]]]])
    print(arr1.shape) #(2,4,2,3)
    print(arr1)
    print(np.max(arr1, axis=0), end="axis=0 ") # (4,2,3)

    [[[x1 x2 x3]
    [x4 x5 x6]]

    [[x7 x8 x9]
    [x10 x11 x12]]

    [[x13 x14 x15]
    [x16 x17 x18]]

    [[x19 x20 x21]
    [x22 x23 x24]]]

    再比对取值:

    [[x1 x2 x3]
    [x4 x5 x6]]

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

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

    中取最大值,因为例子中两组值都是一样的,所以结果就为

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

    再比对取值:

    [[x7 x8 x9]
    [x10 x11 x12]]

    [[ 2 3 4]
    [ 3 65 1]]

    [[ 3 1 2]
    [ 3 5 1]]

    中取最大值,结果为

    [[3 3 4]

    [3 65 1]]

    再比对取值:

    [[x13 x14 x15]
    [x16 x17 x18]]

    [[ 1 33 2]
    [44 55 66]]

    [[ 1 3 2]
    [ 4 5 7]]

    中取最大值,结果为

    [[1 33 2]

    [44 55 66]]

    再比对取值:

    [[x19 x20 x21]
    [x22 x23 x24]]

    [[21 12 17]
    [ 3 11 43]]

    [[ 3 5 6]
    [ 7 2 8]]

    中取最大值,结果为

    [[21 12 17]

    [7 11 43]]

    最终结果为

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

    [[ 3 3 4]
    [ 3 65 1]]

    [[ 1 33 2]
    [44 55 66]]

    [[21 12 17]
    [ 7 11 43]]]

    下面剩下三组值,请读者自己算出结果。

    print(np.max(arr1, axis=1), end="axis=1 ") # (4,2,3)

    print(np.max(arr1, axis=2), end="axis=2 ") # (2,4,3)

    print(np.max(arr1, axis=3), end="axis=2 ") # (2,4,2)

  • 相关阅读:
    Happy Number
    [leedcode]Remove Linked List Elements
    [leedcode] Count Primes
    编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
    最短路(队列优化)
    两函数的交点
    最小生成树
    最小生成树
    线段树区间修改和查询和单点查询(线段树模板1)
    博弈论合集(博弈)
  • 原文地址:https://www.cnblogs.com/fanstatic/p/11189032.html
Copyright © 2011-2022 走看看