Loading

NumPy模块

1 创建数组

1.1 数组 array()

x=np.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)
参数 说明
object 必选,为一个序列型对象,如列表、元组、集合等,还可以是一个已创建好的数组
dtype 可选,用于指定数组元素的数据类型
copy 可选,用于设置是否需要复制对象
order 可选,用于指定创建数组的样式
subok 可选,默认返回一个与基类的类型一致的数组
ndmin 可选,用于指定生成数组的最小维度

1.2 等差数组 arange()

x=np.arange(start,stop,step,dtype=None)
参数 说明
start 可选,表示起始值。如果省略,则默认为0
stop 必选,表示结束值,生成的数组元素不包括该值
step 可选,表示步长。如果省略,则默认为1:如果指定了该参数,则必须给出参数 start 的值
dtype 可选,表示创建的数组元素的数据类型。默认值为 Non ,如果省略,则从其他参数推断数据类型

1.3 其他方法

#全1数组
>>> np.ones((2,3))
array([[1., 1., 1.],
       [1., 1., 1.]])
#全0数组
>>> np.zeros((2,3),dtype=np.int32)
array([[0, 0, 0],
       [0, 0, 0]])
#不填充值
>>> np.empty((2,2))
array([[4.76558753e+180, 1.46923440e+195],
       [2.44048419e-152, 6.96411114e+252]])
#填充特定值
>>> np.full((2,3),6)
array([[6, 6, 6],
       [6, 6, 6]])
#等差数列
#linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
>>> np.linspace(1,11,6)
array([ 1.,  3.,  5.,  7.,  9., 11.])
#等比数列
#logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)
>>> np.logspace(1,5,5,base=2)
array([ 2.,  4.,  8., 16., 32.])

1.3 随机数组

#1.rand()
x=np.random.rand(3)
>>>[0.23991472 0.42578649 0.83421479]
x=np.random.rand(2,3)
>>>[[0.08081472 0.28780562 0.91088001]
 [0.13229275 0.03861983 0.74028659]]
#2.randn() 符合标准正态分布
>>> np.random.randn(3)
array([-0.27443177, -0.95246366,  0.37323299])
>>> np.random.randn(2,3)
array([[-0.55244484,  0.49217026,  0.83044099],
       [ 0.19686954,  2.22208364, -0.50861106]])
#3.randint() 指定范围的随机整数
>>> np.random.randint(1,5,10)
array([2, 2, 1, 3, 3, 3, 2, 4, 4, 2])
#4.normal() 生成正态分布的随机数
#numpy.random.normal(loc,scale,size)
>>> np.random.normal(85,10,(2,5))
array([[77.61266301, 93.17333781, 74.97514828, 90.90911221, 86.76121475],
       [83.031985  , 94.36001514, 90.91494467, 84.11853472, 84.32256207]])

1.4 从已有数组中创建数组

#numpy.asarray(a,dtype=None,order=None)
#同array(),不过参数是数组类型array时,array()返回copy,asarray()只想同一块内存
>>> arr1=np.array([3,2])
>>> arr2=np.asarray(arr1)
>>> arr1
array([3, 2])
>>> arr2=arr2.sort()
>>> arr1
array([2, 3])
#numpy.frombuffer(buffer,dtype=float,count=-1,offset=0)

#numpy.fromiter(iterable,dtype,count=-1)
#可迭代对象
>>> np.fromiter(range(10),dtype=np.int32)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#numpy.empty_like(prototype,dtype=None,order='K',subok=True)
#创造一个与给定数组具有相同维度和数据类型且未初始化的数组
>>> arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
>>> np.empty_like(arr)
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])
#numpy.zeros_like()
>>> np.zeros_like(arr)
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])
#numpy.ones_like()
>>> np.ones_like(arr)
array([[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1]])
#numpy.full_like(a,fill_value,dtype=None,order='K',subok=True)
>>> np.full_like(arr,6)
array([[6, 6, 6, 6, 6],
       [6, 6, 6, 6, 6],
       [6, 6, 6, 6, 6],
       [6, 6, 6, 6, 6]])

2 查看数组属性

>>> arr=np.array([[1,2],[3,4],[5,6]])
#1.行数和列数
>>> arr.shape
(3, 2)
>>> arr.size
#2.元素个数
6
#3.数据类型
>>> arr.dtype
dtype('int32')
#4.维数
>>> arr.ndim
2
数据类型 描述 数据类型 描述
bool_
int_ uint64
intc float_
intp float16
int8 float32
int16 float64
int32 complex_
int64 complex64
uint8 complex128
uint16 datetime64
uint32 timedelta64

3 选取数组元素

>>> arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
#普通索引
#arr[x1]
>>> arr[3]
array([15, 16, 17, 18, 19])
#arr[x1,y1]
>>> arr[3,2]
17
#花式索引
#arr[[x1,x2,...,xn]]
>>> arr[[0,3]]
array([[ 0,  1,  2,  3,  4],
       [15, 16, 17, 18, 19]])
#arr[[x1,x2,...,xn],[y1,y2,...,yn]]
>>> arr[[0,3],[4,4]]
array([ 4, 19])
>>>
#切片 [start:stop:step]
>>> arr[:2]
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> arr[::2]
array([[ 0,  1,  2,  3,  4],
       [10, 11, 12, 13, 14]])
>>> arr[::2,-2:-3:-1]
array([[ 3],
       [13]])
#整数索引和切片可混用
>>> arr[::2,-1]
array([ 4, 14])
#切片赋值:一个标量值
>>> arr[::2,-1]=100
>>> arr
array([[  0,   1,   2,   3, 100],
       [  5,   6,   7,   8,   9],
       [ 10,  11,  12,  13, 100],
       [ 15,  16,  17,  18,  19]])
#切片赋值:数组或列表
>>> arr[::2,-1]=[101,102]
>>> arr
array([[  0,   1,   2,   3, 101],
       [  5,   6,   7,   8,   9],
       [ 10,  11,  12,  13, 102],
       [ 15,  16,  17,  18,  19]])

#布尔索引
>>> arr==6
array([[False, False, False, False, False],
       [False,  True, False, False, False],
       [False, False, False, False, False],
       [False, False, False, False, False]])
#可用作数组索引
>>> arr1
array([[60, 61, 62, 63, 64],
       [65, 66, 67, 68, 69],
       [70, 71, 72, 73, 74],
       [75, 76, 77, 78, 79]])
>>> arr1[arr==6]
array([66])
#布尔索引可以和整数索引、切片索引混用,使用&|的布尔运算符
>>> arr1[(arr==6) | (arr==8)]
array([66, 68])

4 排序

>>> arr
array([[3, 5, 7],
       [2, 5, 1]])
#sort() axis=0按列排序,axis=1按行排序,默认按行排序
>>> arr.sort()
>>> arr
array([[3, 5, 7],
       [1, 2, 5]])
>>> arr.sort(axis=0)
>>> arr
array([[1, 2, 5],
       [3, 5, 7]])
#argsort()返回排序后,元素在原数组中的下表列表
>>> arr
array([[6, 1, 4],
       [3, 0, 9]])
>>> arr.argsort()
array([[1, 2, 0],
       [1, 0, 2]], dtype=int64)
#lexsort() 多级排序,最后一个key优先
#axis=1按行排序
>>> arr
array([[3, 3, 8],
       [6, 9, 7],
       [3, 3, 2]])
>>> index=np.lexsort((arr[:,2],arr[:,1],arr[:,0]))
>>> index
array([2, 0, 1], dtype=int64)
>>> arr[index]
array([[3, 3, 2],
       [3, 3, 8],
       [6, 9, 7]])

5 数组重塑

5.1 改变数组形状

#resize()和reshape()相同,区别在于resize()改变数组本身
>>> arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],])
>>> arr.reshape(5,4)
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19]])
>>> arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
>>> arr.resize(5,4)
>>> arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19]])
#transpose()
>>> arr
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])
>>> arr.transpose()#arr.transpose(1,0)
array([[ 0,  6, 12, 18],
       [ 1,  7, 13, 19],
       [ 2,  8, 14, 20],
       [ 3,  9, 15, 21],
       [ 4, 10, 16, 22],
       [ 5, 11, 17, 23]])
#swapaxes()对轴两两置换
>>> arr
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> arr.shape
(2, 3, 4)
>>> arr.swapaxes(1,2)#等价于arr.swapaxes(2,1)
array([[[ 0,  4,  8],
        [ 1,  5,  9],
        [ 2,  6, 10],
        [ 3,  7, 11]],

       [[12, 16, 20],
        [13, 17, 21],
        [14, 18, 22],
        [15, 19, 23]]])
>>>
#flatten() 返回一个折叠成一维的数组
>>> arr
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> arr.flatten()
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])

5.2 数组翻转

#上下翻转 numpy.flipud() ud=up-down
#向量用filpud(),因为向量是竖着排的
>>> arr
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])
>>> np.flipud(arr)
array([[18, 19, 20, 21, 22, 23],
       [12, 13, 14, 15, 16, 17],
       [ 6,  7,  8,  9, 10, 11],
       [ 0,  1,  2,  3,  4,  5]])
#左右翻转 numpy.fliplr() lr=left-right
>>> np.fliplr(arr)
array([[ 5,  4,  3,  2,  1,  0],
       [11, 10,  9,  8,  7,  6],
       [17, 16, 15, 14, 13, 12],
       [23, 22, 21, 20, 19, 18]])
>>>

5.3 数组分裂

#一维数组→一维数组,多维数组→多维数组
#numpy.split(arr,n) 把arr均分为n个
>>> arr
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])
>>> np.split(arr,2)
[array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])]
#numpy.sply(arr,[obj1,obj2,obj3...]) 按指定索引位置拆分
>>> ar
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.split(ar,[3,8,9])
[array([0, 1, 2]), array([3, 4, 5, 6, 7]), array([8]), array([9])]
#numpy.hsplit(arr,n) 横向拆分
>>> np.hsplit(arr,2)
[array([[ 0,  1,  2],
       [ 6,  7,  8],
       [12, 13, 14],
       [18, 19, 20]]), array([[ 3,  4,  5],
       [ 9, 10, 11],
       [15, 16, 17],
       [21, 22, 23]])]
#numpy.vsplit(arr,n) 竖向拆分
>>> np.vsplit(arr,2)
[array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11]]), array([[12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])]

6 数组的增删改查

6.1 增加

#numpy.append(arr,values,axis=None) 返回一个一维数组
>>> np.append(arr,np.arange(6))
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23,  0,  1,  2,  3,  4,  5])
>>> np.append(arr,[6,5,4,3,2,1])
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23,  6,  5,  4,  3,  2,  1])
#水平方向增加数据
#numpy.concatenate(arr1,arr2,axis=1)/hstack((arr1,arr2))
>>> ar
array([1, 1, 1, 1])
>>> np.hstack((ar,ar))

>>> ar
array([[1],
       [1],
       [1],
       [1]])
>>> np.hstack((arr,ar))
array([[ 0,  1,  2,  3,  4,  5,  1],
       [ 6,  7,  8,  9, 10, 11,  1],
       [12, 13, 14, 15, 16, 17,  1],
       [18, 19, 20, 21, 22, 23,  1]])

#垂直方向增加数据
#numpy.concatenate(arr1,arr2,axis=0)/vstack((arr1,arr2))
>>> arr
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])
>>> ar
array([0, 0, 0, 0, 0, 0])
>>> np.vstack((arr,ar))
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [ 0,  0,  0,  0,  0,  0]])

#numpy.insert(arr,obj,values,axis)
#axis省略,数组展开为一维数组
#axis=0,竖直方向上添加
#axis=1,水平方向添加
>>> np.insert(arr,2,[1,1,1,1,1,1],axis=0)
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [ 1,  1,  1,  1,  1,  1],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])

6.2 删改查

#删除
#numpy.delete(arr,obj,axis) axis不可省略
>>> np.delete(arr,2,axis=0)
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [18, 19, 20, 21, 22, 23]])
>>> np.delete(arr,2,axis=1)
array([[ 0,  1,  3,  4,  5],
       [ 6,  7,  9, 10, 11],
       [12, 13, 15, 16, 17],
       [18, 19, 21, 22, 23]])
#修改
>>> arr[3]=np.array([1,3,5,5,6,6])
>>> arr
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [ 1,  3,  5,  5,  6,  6]])
#查询
#numpy.where(condition,x,y)
>>> np.where(arr>=6,6,0)
array([[0, 0, 0, 0, 0, 0],
       [6, 6, 6, 6, 6, 6],
       [6, 6, 6, 6, 6, 6],
       [0, 0, 0, 0, 6, 6]])
>>> arr_w=arr[np.where(arr>=6)]
>>> arr_w
array([ 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,  6,  6])

6.3 处理缺失值、重复值

#处理数组缺失值
#arr[np.isnan(arr)]=value
#处理数组重复值
#numpy.unique(arr)
>>> arr
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [ 1,  3,  5,  5,  6,  6]])
>>> np.unique(arr)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17])
#arr1是去重后的新数组,arr2是去重后数组中元素在原数组中出现的次数
>>> arr1,arr2=np.unique(arr,return_counts=True)
>>> arr1
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17])
>>> arr2
array([1, 2, 1, 2, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int64)

7 Numpy数组间运算

7.1 四则运算

>>> arr1
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])
>>> arr2
array([[2, 2, 2, 2, 2, 2],
       [2, 2, 2, 2, 2, 2],
       [2, 2, 2, 2, 2, 2],
       [2, 2, 2, 2, 2, 2]])
# + - * / ** () // %
>>> arr1+arr2
array([[ 2,  3,  4,  5,  6,  7],
       [ 8,  9, 10, 11, 12, 13],
       [14, 15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24, 25]])
>>> arr1+3
array([[ 3,  4,  5,  6,  7,  8],
       [ 9, 10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19, 20],
       [21, 22, 23, 24, 25, 26]])
>>> arr1/arr2
array([[ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5],
       [ 3. ,  3.5,  4. ,  4.5,  5. ,  5.5],
       [ 6. ,  6.5,  7. ,  7.5,  8. ,  8.5],
       [ 9. ,  9.5, 10. , 10.5, 11. , 11.5]])
>>> arr1**arr2
array([[  0,   1,   4,   9,  16,  25],
       [ 36,  49,  64,  81, 100, 121],
       [144, 169, 196, 225, 256, 289],
       [324, 361, 400, 441, 484, 529]])
>>> arr1//arr2
array([[ 0,  0,  1,  1,  2,  2],
       [ 3,  3,  4,  4,  5,  5],
       [ 6,  6,  7,  7,  8,  8],
       [ 9,  9, 10, 10, 11, 11]])
>>> arr1%arr2
array([[0, 1, 0, 1, 0, 1],
       [0, 1, 0, 1, 0, 1],
       [0, 1, 0, 1, 0, 1],
       [0, 1, 0, 1, 0, 1]])

#广播:两个不同形状的数组

7.2 矩阵运算

#矩阵乘法 必须满足(m,n)*(n,r)
>>> np.dot(arr1,arr2.T)
array([[ 30,  30,  30,  30],
       [102, 102, 102, 102],
       [174, 174, 174, 174],
       [246, 246, 246, 246]])
#矩阵转置
>>> arr1.T
array([[ 0,  6, 12, 18],
       [ 1,  7, 13, 19],
       [ 2,  8, 14, 20],
       [ 3,  9, 15, 21],
       [ 4, 10, 16, 22],
       [ 5, 11, 17, 23]])
#矩阵求逆 
#矩阵可逆=矩阵满秩=非奇异矩阵 numpy.linalg.inv()
#矩阵不可逆=奇异矩阵 numpy.linalg.pinv()求伪逆

8 运算函数

8.1 数学运算函数

#numpy.add(arr1,arr2)
#numpy.subtract(arr1,arr2)
#numpy.multiply(arr1,arr2)
#numpy.divide(arr1,arr2)

#numpy.reciprocal(arr) 倒数
>>> np.reciprocal(arr)
array([[       inf, 1.        , 0.5       , 0.33333333, 0.25      ,
        0.2       ],
       [0.16666667, 0.14285714, 0.125     , 0.11111111, 0.1       ,
        0.09090909],
       [0.08333333, 0.07692308, 0.07142857, 0.06666667, 0.0625    ,
        0.05882353],
       [0.05555556, 0.05263158, 0.05      , 0.04761905, 0.04545455,
        0.04347826]])
#numpy.power(arr,n)/numpy.power(arr1,arr2) 求幂
#numpy.mod(arr1,arr2) 取余

#numpy.around(arr,n) 舍入函数
>>> np.around(np.reciprocal(arr),4)
array([[   inf, 1.    , 0.5   , 0.3333, 0.25  , 0.2   ],
       [0.1667, 0.1429, 0.125 , 0.1111, 0.1   , 0.0909],
       [0.0833, 0.0769, 0.0714, 0.0667, 0.0625, 0.0588],
       [0.0556, 0.0526, 0.05  , 0.0476, 0.0455, 0.0435]])
#numpy.ceil()向上取整
#numpy.floor()向下取整

#三角函数
#sin,cos,tan,arcsin,arccos,arctan
#degrees()弧度转角度
>>> arr
array([ 0, 30, 45, 60, 90])
>>> np.sin(arr*np.pi/180)
array([0.        , 0.5       , 0.70710678, 0.8660254 , 1.        ])

8.2 统计分析函数

>>> arr
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
#numpy.sum() 求和
>>> np.sum(arr)
45
>>> np.sum(arr[0])
10
>>> np.sum(arr,axis=0)
array([ 5,  7,  9, 11, 13])
#numpy.comsum() 累计求和
>>> np.cumsum(arr)
array([ 0,  1,  3,  6, 10, 15, 21, 28, 36, 45])
#numpy.comprod() 累计求积
>>> np.cumprod(np.arange(1,11))
array([      1,       2,       6,      24,     120,     720,    5040,
         40320,  362880, 3628800])
#numpy.mean() 求平均值
>>> np.mean(arr)
4.5
#numpy.min()\numpy.max()
>>> np.min(arr)
0
>>> np.max(arr)
9
#numpy.average(arr,axis=None,weights=ndarray) 加权平均
>>> arr1
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])
>>> arr2
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 1, 0, 0]])
>>> np.average(arr1,weights=arr2)
21.0
>>> np.average(arr1,axis=1,weights=arr2[3])
array([ 3.,  9., 15., 21.])
#numpy.median() 中位数
#numpy.var() 方差
#numpy.std() 标准差
#numpy.argmin()\numpy.argmax() 最小值和最大值的下表(一维的下标)
#unravel_index() 根据数组形状把一维下标转换成多维下表
>>> np.unravel_index(np.argmax(arr1),arr1.shape)
(3, 5)
#numpy.ptp() 数组最大值和最小值的差
>>> np.ptp(arr1)
23
posted @ 2023-10-25 15:24  chenelm  阅读(30)  评论(0)    收藏  举报