首先说下axis . 直观的理解为当axis = n,时, 在n这个维度观察数据,比如n是列,则取一列,求最小值,然后在其他维度循环这样的操作。或者也可以理解为axis=n, 则原始数据第n维为也就是shape[n] = 1, 其他维不变,axis = m,n,等价于先m,再n 操作,或者理解为m,n维为1 其他维度不变。
np.amin()
当输入是不一定是numpy.array 时,用np.amin, 如果输入是np.array, 可以直接用input.min(axis=n) 来求最小值矩阵
import numpy as np
a = np.random.randint(2,40,size=(2,3,4))
print(a)
print("="*90)
print("np.amin(a,0)",np.amin(a,0))
print("a.min(0)", a.min(0))
print("="*90)
print("np.amin(a,1)",np.amin(a,1))
print("a.min(1)", a.min(1))
print("="*90)
print("np.amin(a,2)",np.amin(a,2))
print("a.min(2)", a.min(2))
print("="*90)
print(np.amin(a,(0,2)))
# min 的axis 只能是int ,print("a.min([0,2])", a.min([0,2]))会报错
#TypeError: 'list' object cannot be interpreted as an integer
结果
[[[38 3 22 27]
[32 35 15 36]
[38 20 28 28]]
[[ 9 9 18 12]
[24 29 36 25]
[31 31 8 30]]]
==========================================================================================
np.amin(a,0) [[ 9 3 18 12]
[24 29 15 25]
[31 20 8 28]]
a.min(0) [[ 9 3 18 12]
[24 29 15 25]
[31 20 8 28]]
==========================================================================================
np.amin(a,1) [[32 3 15 27]
[ 9 9 8 12]]
a.min(1) [[32 3 15 27]
[ 9 9 8 12]]
==========================================================================================
np.amin(a,2) [[ 3 15 20]
[ 9 24 8]]
a.min(2) [[ 3 15 20]
[ 9 24 8]]
==========================================================================================
[ 3 15 8]
可见只要axis 是 int型,那么 np.min 和 np.amin 只有用法不一样。结果是一样的。
======================================================================================
np.minimum 是多个input 进行比较,
input1.shape = input2.shape = output.shape, 只是对应元素位置上区最小值。