1、用法:np.nonzero(a)
返回:数组a中非零元素的索引值数组
import numpy as np
a = np.random.uniform(-10, 10, 4)
print(a)
[ 2.69869382 -8.87937198 4.70100555 1.87901029]
b = np.nonzero(a)
print(b)
(array([0, 1, 2, 3], dtype=int64),)
#索引元组b是二维数组,第一维是非零元素的序号,第二维是非零元素序号的数据类型。a是一维数组,有4个非零元素,返回4个非零元素的序号
a = [[0, 1, 1],
[1, 0, 1],
[1, 1, 0]]
print(a)
[[0, 1, 1], [1, 0, 1], [1, 1, 0]]
b = np.nonzero(a)
print(b)
(array([0, 0, 1, 1, 2, 2], dtype=int64), array([1, 2, 0, 2, 0, 1], dtype=int64))
#a是二维数组,array长度为6,即a有6个非零元素,第一个array是对非零元素的row描述,
#第二个array是对col的描述。索引元组b一直都是二维数组
print(np.transpose(b))
[[0 1]
[0 2]
[1 0]
[1 2]
[2 0]
[2 1]]
#调用transpose转置索引序号b元组,非零元素的序号[0,1],即第0行,第一列,以此类推。
2、用法:np.amin(a,axis=0/1)
返回 :一维数组a中的最小值,二维数组需通过axis指定行或列,获取行或列的最小值,如不指定,则是所有元素的最小值
import numpy as np
a = [[0, 1, 2],
[1, 0, 3],
[1, 4, 0]]
a1 = np.asarray(a, dtype = np.float32)
print(a1[np.nonzero(a1)])
[ 1. 2. 1. 3. 1. 4.]
#使用a[np.nonzero(a)]获取a中所有非零值,变一维数组,但需要将a转换成array
print(np.amin(a1[np.nonzero(a1)]))
1.0
#获取数组的最小值
#把a1中等于0的值换成a1数组中的最小值
a1[a1==0] = np.amin(a1[np.nonzero(a1)])
print('a1 = ', a1)
a1 = [[ 1. 1. 2.]
[ 1. 1. 3.]
[ 1. 4. 1.]]
3、用法:np.amax(a, axis=0/1)
返回:一维数组a中的最大值,二维数组需通过axis指定行或列,获取行或列的最大值,如不指定,则是所有元素的最大值
import numpy as np
a = [[1,4,7],
[2,5,8],
[3,6,9]]
b = np.amax(a, axis=0)
print(b)
b = [3,6,9]