Numpy的基本使用3
官网:http://www.numpy.org
import numpy as np
#聚合
#生成10个随机数
L = np.random.random(10)
L
array([0.05703554, 0.03902933, 0.4824235 , 0.15286251, 0.25063995,
0.86616324, 0.39476347, 0.86343803, 0.77289392, 0.13780678])
#Python中:
sum(L)
4.017056282550913
#Numpy中(效率更高)推荐该方式
np.sum(L)
4.017056282550913
np.min(L)
0.039029333319153814
L.max()
0.8661632444424849
#矩阵中:
X = np.arange(16).reshape(4,4)
X
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
np.sum(X)
120
#x=0 x轴压缩 沿y轴(列)求和
np.sum(X,axis=0)
array([24, 28, 32, 36])
np.sum(X,axis=1)
array([ 6, 22, 38, 54])
#所有元素乘积
np.prod(X)
0
#求平均值
np.mean(X)
7.5
#求中位数
np.median(X)
7.5
#百分位
np.percentile(X,q=50)
7.5
#绘图中常用的5个百分位点:
X = np.arange(1,101)
print(X)
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100]
for percent in [0,25,50,75,100]:
... print(np.percentile(X,q=percent));
...
1.0
25.75
50.5
75.25
100.0
#方差:
np.var(X)
833.25
#生成10000个均值为0 标准差为1的符合正态分布的点:
X = np.random.normal(0,1,size=10000)
#平均值趋近于0
np.mean(X)
-0.0005517474486229314
#标准差趋近于1
np.std(X)
1.0011496373394013
#索引
#最小值的索引
X
array([ 0.45997786, -0.79725882, -0.87003988, ..., 0.72032504,
-0.13463416, 0.12829127])
np.argmin(X)
7103
#排序与索引
x = np.arange(16)
x
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
#shuffle打乱顺序
np.random.shuffle(x)
x
array([ 9, 12, 0, 7, 5, 11, 3, 13, 6, 1, 15, 8, 4, 2, 10, 14])
np.sort(x)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
#矩阵中排序
#生成0-9之间4*4的随机二维数组
X = np.random.randint(10,size=(4,4))
X
array([[6, 9, 6, 9],
[5, 4, 8, 9],
[9, 4, 2, 7],
[5, 5, 5, 1]])
#每行排序
np.sort(X)
array([[6, 6, 9, 9],
[4, 5, 8, 9],
[2, 4, 7, 9],
[1, 5, 5, 5]])
#axis默认为1
np.sort(X,axis=1)
array([[6, 6, 9, 9],
[4, 5, 8, 9],
[2, 4, 7, 9],
[1, 5, 5, 5]])
#每列排序
np.sort(X,axis=0)
array([[5, 4, 2, 1],
[5, 4, 5, 7],
[6, 5, 6, 9],
[9, 9, 8, 9]])
x = np.arange(10)
np.random.shuffle(x)
x
array([7, 6, 4, 9, 0, 5, 3, 8, 1, 2])
#根据值的大小排序 显示其索引 例如:0所在索引为4
np.argsort(x)
array([4, 8, 9, 6, 2, 5, 1, 0, 7, 3], dtype=int64)
#partition
#参考快排中的分治思想的标识位 索引3之前的都比该位置小(无序),后的都比该位置大(无序)
np.partition(x,3)
#返回索引
array([1, 0, 2, 3, 4, 5, 6, 7, 8, 9])
X
array([[6, 9, 6, 9],
[5, 4, 8, 9],
[9, 4, 2, 7],
[5, 5, 5, 1]])
#每行 默认axis=1
np.partition(X,1,axis=1)
array([[6, 6, 9, 9],
[4, 5, 8, 9],
[2, 4, 9, 7],
[1, 5, 5, 5]])
#每列
np.partition(X,1,axis=0)
array([[5, 4, 2, 1],
[5, 4, 5, 7],
[9, 9, 6, 9],
[6, 5, 8, 9]])
#Fancy Indexing
x
array([7, 6, 4, 9, 0, 5, 3, 8, 1, 2])
x[3]
9
x[3:10]
array([9, 0, 5, 3, 8, 1, 2])
#第三个参数为步长
x[3:10:2]
array([9, 5, 8, 2])
#指定索引 Fancy Index
index = [3,5,9]
x[index]
array([9, 5, 2])
index = np.array([[0,2],[1,3]])
x[index]
array([[7, 4],
[6, 9]])
X = np.arange(16).reshape(4,-1)
X
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
row = np.array([0,1,2])
col = np.array([1,2,3])
X[row,col]
#取得是(0,1) (1,2) (2,3)对应位置的值
array([ 1, 6, 11])
X[0,col]
array([1, 2, 3])
#复习::2表示前两行
X[:2,col]
array([[1, 2, 3],
[5, 6, 7]])
#复习:1:3表示中间两行1和2
col = [True,False,True,True]
X[1:3,col]
array([[ 4, 6, 7],
[ 8, 10, 11]])
X
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
col
[True, False, True, True]
#numpy与array的比较:
x
array([7, 6, 4, 9, 0, 5, 3, 8, 1, 2])
x>=3
array([ True, True, True, True, False, True, True, True, False,False])
np.sum(x>=3)
7
np.all(x>=0)
True
X
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
np.sum(X%2==0)
8
#查看每行:
np.sum(X%2==0,axis=1)
array([2, 2, 2, 2])
#查看每列:
np.sum(X%2==0,axis=0)
array([4, 0, 4, 0])
#注意:与或符号为单个
np.sum((x>3)&(x<8))
4
np.sum((x>3)|(x<8))
10
(x>3)|(x<8)
array([ True, True, True, True, True, True, True, True, True,True])
np.sum(~(x>3))
4
#直接使用:
x[(x>3)|(x<8)]
array([7, 6, 4, 9, 0, 5, 3, 8, 1, 2])
x
array([7, 6, 4, 9, 0, 5, 3, 8, 1, 2])
x[x>3]
array([7, 6, 4, 9, 5, 8])
跟着大佬梳理的流程走下来的,在这里注明一下出处:
https://github.com/Exrick/Machine-Learning
注:大佬的更直观详细
这篇博客介绍了NumPy库在Python中的基本使用,包括生成随机数、聚合操作(如求和、最小值、最大值)、矩阵运算、排序与索引、方差计算等。还展示了Fancy Indexing、条件筛选以及数组比较等高级用法,是理解NumPy数组操作的重要教程。

被折叠的 条评论
为什么被折叠?



