numpy-统计排序

numpy-统计排序

目录

常用统计函数

最大最小

函数 描述
最小 np.amin(arr,axis) 查找指定轴上,数组元素的最小值
np.amax(arr,axis) 查找指定轴上,数组元素的最大值
np.min(arr,axis) 查找指定轴上,数组元素的最小值
最大 np.max(arr,axis) 查找指定轴上,数组元素的最大值
np.argmin(arr) 最小值索引
np.argmax(arr) 最大值索引
import numpy as np  
  
arr = np.array([[50.0, 10, 20], [80.555, 10, 31], [22, 15, 35]])

print(np.min(arr))
print(np.max(arr))
print(np.argmax(arr))
print(np.argmin(arr))

print(np.round(arr,2))

# 10.0   #最小值
# 80.555  #最大值 
# 3   # 最大值索引
# 1   # 最小值索引
# [[50.   10.   20.  ]
#  [80.56 10.   31.  ]
#  [22.   15.   35.  ]]

平均方差

函数 描述
极差 np.ptp(arr,axis) 极差---最大值与最小值的差
np.sum(arr,axis) 计算所有元素之和
np.prod(arr,axis) 计算数组中所有元素之积
np.mean(arr,axis) 平均数,期望
np.median(arr,axis) 中位数
np.average(arr,axis,weights) 加权平均值,带权重
np.percentile(arr,p,axis) 表示小于这个值的观察值的百分比
np.std(arr,axis) 计算标准差
np.var(arr,axis) 计算方差
np.diff 沿着指定轴计算第N维的离散差值
# 最大、最小、及其最大值索引、最小值索引

# np.ptp(arr,axis)
import numpy as np

a=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
print(np.ptp(a))
print(np.ptp(a,1))
#
#[[1 2 3]
# [4 5 6]
# [7 8 9]]
#8
#[6 6 6]


#numpy.percentile()

a = np.array([[1, 4, 7], [6, 9, 10]])

print(a)
print(np.percentile(a, 50))

#[[ 1  4  7]
 [ 6  9 10]]
6.5

排序

函数 描述
np.sort(arr) 排序,返回副本
np.argsort(arr) 返回排序的索引
np.searchsorted(arr,value) 返回插入数据的位置索引,arr已经排序
import numpy as np

arr = np.array([[50.0, 10, 20], [80.555, 10, 31], [22, 15, 35]])
print(np.sort(arr))   # 默认对最高维度进行排序

# [[10.    20.    50.   ]
#  [10.    31.    80.555]
#  [15.    22.    35.   ]]

print(np.argsort(arr))

# [[1 2 0]
#  [1 2 0]
#  [1 0 2]]

print(np.sort(arr,axis=0))
print(np.argsort(arr,axis=0))

# [[22.    10.    20.   ]
#  [50.    10.    31.   ]
#  [80.555 15.    35.   ]]
# [[2 0 0]
#  [0 1 1]
#  [1 2 2]]



np.searchsorted()  # 返回插入排序数据索引

arr2=np.linspace(0,9,10)
print(arr2)

print(np.searchsorted(arr2,3.5))
# [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
# 4

函数 描述
np.unique(arr) 返回元素,排除重复后,排序
np.intersect1d(arr1,arr2) 返回交集并排序
np.union1d(arr1,arr2) 返回并集并排序
np.setdiff1d(arr1,arr2) 返回二者的差
np.setxor1d(arr1,arr2) 返回二者的对称差

arr1=np.array([1,6,2,3,5,5])
arr2=np.array([8,1,3,6,9])
print(np.unique(arr1))
print(np.intersect1d(arr1,arr2))
print(np.setdiff1d(arr1,arr2))

#[1 2 3 5 6]
#[1 3 6]
#[2 5]


翻转

np.flip

#Reversing a 1D array
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
reversed_arr = np.flip(arr)

print(reversed_arr)
#[8 7 6 5 4 3 2 1]

#-------------------------------------------------------
#Reversing a 2D arra
arr_2d = np.array([[1, 2, 3, 4], 
                   [5, 6, 7, 8], 
                   [9, 10, 11, 12]])
reversed_arr = np.flip(arr_2d)
print(reversed_arr)
#[[12 11 10 9]
# [ 8 7 6 5]
# [ 4 3 2 1]]

reversed_arr_rows = np.flip(arr_2d, axis=0)
print(reversed_arr_rows)
#[[ 9 10 11 12]
# [ 5 6 7 8]
# [ 1 2 3 4]]

reversed_arr_columns = np.flip(arr_2d, axis=1)
print(reversed_arr_columns)
#[[ 4 3 2 1]
# [ 8 7 6 5]
# [12 11 10 9]]

填充函数

np.fill()        # 对所有数据填充
fill_diagonal()   # 

np.clip(x,3,8)    # 指定numpy 最小值和最大值

x=np.array([1,2,3,5,6,7,8,9])
np.clip(x,3,8)
Out[88]:
array([3, 3, 3, 5, 6, 7, 8, 8])

查找

np,where()

1、不带条件

返回tuple,第一个值是索引,第二个是空值

输入必须是 数组,不能是 list

输入一般是一维,行向量或者列向量都可以

2、带条件

np.where(condition, x, y)

满足条件(condition),输出x,不满足输出y

aa = np.arange(10)
print(np.where(aa>5))
#(array([6, 7, 8, 9], dtype=int64),)


print(np.where(aa>5,2,-2))

# [-2 -2 -2 -2 -2 -2  2  2  2  2]

np.extract()

按某条件查找,返回元素

extract(condition, arr)

aa = np.arange(10)
print(np.extract(aa>8,aa))
# [9]
上一篇:import numpy as np


下一篇:线性代数-张量算法的基本性质