numpy的基本使用3

这篇博客介绍了NumPy库在Python中的基本使用,包括生成随机数、聚合操作(如求和、最小值、最大值)、矩阵运算、排序与索引、方差计算等。还展示了Fancy Indexing、条件筛选以及数组比较等高级用法,是理解NumPy数组操作的重要教程。

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
注:大佬的更直观详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值