机器学习入门4_numpy的运算与聚合

机器学习入门4_numpy的运算与聚合

import numpy as np

1. numpy数组的运算

用numpy创建和运算数组要比python本身创建和运算快很多

1.1【回顾】python中List的运算

python中list的加法和与数字的乘法实际上是字符串之间的相加(乘法也可看成是加法)

例子如下:

# Python中list加法和乘法的例子
A = [i for i in range(10)]
B = [i for i in range(15,20)]
print("this is A+B:",A+B)  # A,B数组的拼接
print("this is A*2:",A*2)  # 两个A的拼接
# print("this is A/2:",A/2) # 无法运算
# print("this is A-B:",A-B) # 无法运算
this is A+B: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 15, 16, 17, 18, 19]
this is A*2: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

1.2 numpy中array的运算

1.2.1 数组自身和数组与数字的运算

若X为np.array,解释下列运算的含义

  • X+1,X-1, X*2, X/2, X//2, X**2,X%2
  • np.sin(X), np.power(X,3),np.log(X),np.log2(X),np.log10(X)

不熟悉的有: X//2, X**2,X%2,np.power(X,3),np.log(X),np.log2(X)

1.2.2 array的矩阵运算

X,Y都是numpy的array,矩阵的线代运算:

  • Z=X.dot(Y) # 线代乘法
  • Z=X.T # 转置
  • Z=np.linalg.inv(X) # 求逆(方阵)
  • Z=np.linalg.pinv(X) # 求广义逆(非方阵)
  • Z=np.linalg.det(X) # 求行列式

此外还有特征值,特征向量,奇异值等,可自行百度

2. numpy中的聚合操作

所谓聚合,就是操作后,只剩一个数字。如求和,求最大最小值等

2.1 array聚合

这是对于array这个对象的方法,可以记忆为数组的最大值,最小值

  • array.min()
  • array.max()

2.2 numpy聚合

2.2.1 numpy聚合的一些方法

这是用numpy的方法对数组聚合,可以记忆为对这个数组求和,求积,求平均数,求标准差

  • np.sum(arr) # arr为一个np.array
  • np.prod(arr)
  • np.std(arr)
  • np.median(arr)
  • np.var(arr)

还有一个比较特殊的特殊的方法:np.percentile

X = np.arange(100)
Y = X.reshape(4,-1)  
print(Y)
Z = np.percentile(Y,q = 40)  # 表示输出Z的第40%大的数,若把40改成50,则表示中位数
Z
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]





6.0

2.3 关于轴

判断轴:

从最外部的方括号开始,为0轴。则其方向就为从上到下。

内部的方括号,为1轴,所以方向(单个方括号的方向)为从左到下右。

在运算时,是在顺着轴的方向运算,然后移动轴进行下一次运算,如算np.sum(A,0)时,是先加第一列,然后相加第二列,最后到第n列。

X = np.arange(20)
Y = X.reshape(4,-1)
print('Y array is: \n',Y)
print('Sum the 0 axis:')
Y0 = np.sum(Y,0)
print(Y0)
print('Sum the 1 axis:')
Y1 = np.sum(Y,1)
print(Y1)
Y array is: 
 [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
Sum the 0 axis:
[30 34 38 42 46]
Sum the 1 axis:
[10 35 60 85]
X = np.random.randint(0,30,20)
Y = X.reshape(4,-1)
print('Y array is: \n',Y)
print('Sort the 0 axis:')
Y0 = np.sort(Y,0)
print(Y0)
print('Sort the 1 axis:')
Y1 = np.sort(Y,1)
print(Y1)
Y array is: 
 [[ 9 13 10 23  5]
 [13 27  2 28 27]
 [21  9 13  9  0]
 [18 19 18  5 20]]
Sort the 0 axis:
[[ 9  9  2  5  0]
 [13 13 10  9  5]
 [18 19 13 23 20]
 [21 27 18 28 27]]
Sort the 1 axis:
[[ 5  9 10 13 23]
 [ 2 13 27 27 28]
 [ 0  9  9 13 21]
 [ 5 18 18 19 20]]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值