【机器学习】python3中numpy,pandas等科学计算包的使用(持续更新)

本学期选修了《机器学习》,每周两次,每次课都有5-10道编程练习,限时很刺激,做点笔记!

numpy中文手册,查着很快很爽:https://www.numpy.org.cn/reference/ 感恩翻译者和网站的维护者们!

目录

1.Numpy常用的

1.0 n维数组(ndarray)

1.0.1 np.array()

1.0.2 np.ones() 

1.0.3 np.zeros()

1.0.4 np.random()

1.0.5 np.arange()

1.0.6 数组切片 

1.1 矩阵乘法

1.1.1 点乘

1.1.2 矩阵乘法

 1.2 均值

1.3 数组拼接

1.3.1 竖直方向平铺

1.3.2 水平方向平铺

1.4 方差和协方差

1.4.1 方差 (variance)

1.4.2 协方差(covariance)


1.Numpy常用的

1.0 n维数组(ndarray)

1.0.1 np.array()

import numpy as np

array1_6 = np.array(((1, 6), (2, 7)))  # NumPy中的默认数据类型是float_
array2_3 = np.array([[1, 2, 3], [4, 5, 6]], np.int32)  # 显示指定数据类型为32bit integer

print(array1_6)
print(type(array1_6))
print(array1_6.shape)

print(array2_3)
print(type(array2_3))
print(array2_3.shape)

ndarray 可以指定的数据类型:

布尔(Booleans):platform?(平台?)表示该类型可能并非在所有平台上都可用

类型备注字符代码
bool_兼容:Python bool'?'
bool88位 

整数(Integers):

类型备注字符代码
byte兼容:C char'b'
short兼容:C短'h'
intc兼容:C int'i'
int_兼容:Python int'l'
longlong兼容:C长'q'
intp大到足以适合指针'p'
int88位 
int1616位 
int3232位 
int6464位 

无符号整数(Unsigned integers):

类型备注字符代码
ubytecompatible:C unsigned char'B'
ushort兼容:C unsigned short'H'
uintccompatible:C unsigned int'I'
uint兼容:Python int'L'
ulonglong兼容:C长'Q'
uintp大到足以适合指针'P'
uint88位 
uint1616位 
uint3232位 
uint6464位 

浮点数字(Floating-point numbers):

类型备注字符代码
half 'e'
single兼容:C浮动'f'
double兼容:C双 
float_兼容:Python float'd'
longfloat兼容:C长浮'g'
float1616位 
float3232位 
float6464位 
float9696位,平台? 
float128128位,平台? 

复杂的浮点数(Complex floating-point numbers):

类型备注字符代码
csingle 'F'
complex_兼容:Python复杂'D'
clongfloat 'G'
complex64两个32位浮点数 
complex128两个64位浮点数 
complex192两个96位浮动平台? 
complex256两个128位浮点数,平台? 

任何Python对象(Any Python object):

类型备注字符代码
object_任何Python对象'O'

既可以传入tuple,又可以传入list,特别的,当数组为1 * n 时 ,其.shape 为 (n, ) 而不是 (1, n)

import numpy as np

array1_6 = np.array((1, 6))

print(array1_6)
print(type(array1_6))
print(array1_6.shape)

1.0.2 np.ones() 

import numpy as np

array1_6 = np.ones((1, 6))

print(array1_6)
print(type(array1_6))
print(array1_6.shape)

可以发现这里传入(1, 6)的效果与np.array() 完全不同,生成了一个1 * 6的数组并将其全部初始化为1,进一步推广到三维:

import numpy as np

array1_6 = np.ones((2, 3, 4))

print(array1_6)
print(type(array1_6))
print(array1_6.shape)

之后要访问(1, 0, 3) 处的元素:

print(array1_6[1][0][3])

1.0.3 np.zeros()

原理同1.0.2 np.ones() ,效果初始化为0,略

 

1.0.4 np.random()

原理同1.0.2 np.ones() ,效果初始化为随机数,这里比较奇怪的时np.random不能直接用,要再加上一个random

import numpy as np

array1_6 = np.random.random((1, 6))

print(array1_6)
print(type(array1_6))
print(array1_6.shape)

1.0.5 np.arange()

待补充

 

1.0.6 数组切片 

切片的规则很简单,举一个例子:

b = np.array([[i, i+1, i+2, i+3, i+4, i+5] for i in range(6)])

使用上面的代码创建一个 6*6 的二维 ndarray 命名为 b(这里使用了列表推导式:参考博客

>>> b
array([[ 0,  1,  2,  3,  4,  5],
       [ 1,  2,  3,  4,  5,  6],
       [ 2,  3,  4,  5,  6,  7],
       [ 3,  4,  5,  6,  7,  8],
       [ 4,  5,  6,  7,  8,  9],
       [ 5,  6,  7,  8,  9, 10]])

 然后可以按照以下规则进行切片 (最多 6 个参数可以省略部分参数):

b[row_start: row_end: row_stride, col_start : col_end : col_stride]

 其中步长默认为 row_stride = col_stride = 1 (可以省略),例如:

>>> b[1:2, 1:6]
array([[2, 3, 4, 5, 6]])

 解释:从下标为 1 的行到下标为 2 的行(不包含下标为 2 的行),从下标为 1 的列到下标为 6 的列(不包含下标为 6 的列)

>>> b[::2, 1:6]
array([[1, 2, 3, 4, 5],
       [3, 4, 5, 6, 7],
       [5, 6, 7, 8, 9]])

解释:对行按步长2进行访问,列规则依然是1到6(不含6),步长为1

>>> b[::2, 1:6:2]
array([[1, 3, 5],
       [3, 5, 7],
       [5, 7, 9]])

1.1 矩阵乘法

1.1.1 点乘

import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])

print(a*b)  # 点乘

 

1.1.2 矩阵乘法

import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])

print(np.matmul(a, b))  # 矩阵乘法, educoder上无法识别
print(np.dot(a, b))  # 矩阵乘法

 

 1.2 均值

import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])

print(np.mean(a))  # 均值
print(np.mean(b))  # 均值

1.3 数组拼接

1.3.1 竖直方向平铺

np.vstack(): v -> vertical

import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])

print(np.vstack((a, b)))  # 竖直方向平铺

 

1.3.2 水平方向平铺

np.hstack() : h -> horizontal

import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])

print(np.hstack((a, b)))  # 水平方向平铺

1.4 方差和协方差

1.4.1 方差 (variance)

import numpy as np
a = np.array([[1, 2, 3],[4, 5, 6]])

print(np.var(a))  # 方差

1.4.2 协方差(covariance)

import numpy as np
a = np.array([[1, 2, 3],[4, 5, 6]])

print(np.cov(a))  # 协方差

协方差在numpy中计算的说明:待补充

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值