如果你跟现在一样在学习机器学习,但是对于代码里的numpy、pandas和matplotlib不是很熟悉,那么你可以接着往下看。这里是我在学习过程中对numpy、pandas和matplotlib的常用操作,最后附有原码。我是参考了博主"CV干饭王"师哥的博客,若有侵权,立刻删。
一、Numpy部分
1、创建数组
#首先导入numpy包
import numpy as np
# 生成两行三列的数组,使用ones,zeros,empty
data1 = np.ones(shape=[2,3]) # ones就是全都生成1
data = data1.astype(np.int32) # 将浮点型改为int型
print(data,data.shape,data.dtype)
data2 = np.zeros(shape=[2,3])
print(data2,data2.shape,data2.dtype)
data3 = np.empty(shape=[3,4]) # 随机生成
print(data3,data3.shape,data3.dtype)
结果如下:
# 使用linspace,arange生成数组
data4 = np.linspace(0,10,5) # [0,10]中,等距分成5段
print(data4)
data5 = np.arange(0,10,3)# 左闭右开,步长为3
print(data5)
结果如下:
# 在(0,1)区间内,生成维度为[4,6]的数组
data6 = np.random.normal(0,1,size=(4,6))
print(data6)
# 在(-1,1)见生成10个均匀分布的数,
data7 = np.random.uniform(-1,1,10)
print(data7)
# 正态分布
data8 = np.random.normal(1.8,0.1,100) # 参数分布是 对称轴,标准差,个数
print(data8)
结果如下:
整体代码:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :LeastSquearMethod.py
@File :01_numpy.py
@IDE :PyCharm
@Author :Kandy凯
@Date :2022/7/13 16:32
'''
"""
1、使用ones,zeros,empty创建数组
2、使用linspace,arange生成数组
3、在(0,1)区间内,生成维度为[4,6]的数组
4、在(-1,1)见生成10个均匀分布的数,
5、在(0,1)区间内,生成维度为[4,6]的数组
"""
import numpy as np
# 1、创建数组
# 生成两行三列的数组,使用ones,zeros,empty
data1 = np.ones(shape=[2,3]) # ones就是全都生成1
data = data1.astype(np.int32) # 将浮点型改为int型
print(data,data.shape,data.dtype)
data2 = np.zeros(shape=[2,3])
print(data2,data2.shape,data2.dtype)
data3 = np.empty(shape=[3,4]) # 随机生成
print(data3,data3.shape,data3.dtype)
# 使用linspace,arange生成数组
data4 = np.linspace(0,10,5) # [0,10]中,等距分成5段
print(data4)
data5 = np.arange(0,10,3)# 左闭右开,步长为3
print(data5)
# 在(0,1)区间内,生成维度为[4,6]的数组
data6 = np.random.normal(0,1,size=(4,6))
print(data6)
# 在(-1,1)见生成10个均匀分布的数,
data7 = np.random.uniform(-1,1,10)
print(data7)
# 正态分布
data8 = np.random.normal(1.8,0.1,100) # 参数分布是 对称轴,标准差,个数
print(data8)
2、访问数据
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :LeastSquearMethod.py
@File :02_numpy.py
@IDE :PyCharm
@Author :Kandy凯
@Date :2022/7/13 16:58
'''
"""
访问数据
1、取第一行数据
2、取第二列数据
3、取第1,2,3行,2,3列数据
"""
import numpy as np
data = np.empty(shape=[4,3])
print(data)
# 取第一行数据
data_one_row = data[0,:]
print(data_one_row)
# 取第二列数据
date_two_col = data[:,1]
print(date_two_col)
# 访问第1,2,3行,2,3列数据
datas = data[0:3,1:3]
print(datas)
3、numpy、Tensor、torch之间的互相转换
(如果你没有涉及到Tensor和torch可以先不用管,后面用到的时候再来)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :LeastSquearMethod.py
@File :03_numpy.py
@IDE :PyCharm
@Author :Kandy凯
@Date :2022/7/13 17:11
'''
"""
numpy、Tensor、torch之间的互相转换
"""
import numpy as np
import tensorflow as tf
import torch
# numpy和Tensor互转
arr = np.empty([3,4])
print(arr)
# numpy --> Tensor
tf_arr = tf.convert_to_tensor(arr)
print(tf_arr)
# Tensor --> numpy
arr = tf_arr.eval()
# numpy --> torch
torch_arr = torch.from_numpy(arr)
# torch --> numpy
arr = torch_arr.numpy()
4、list和numpy之间的相互转换
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :LeastSquearMethod.py
@File :04_numpy.py
@IDE :PyCharm
@Author :Kandy凯
@Date :2022/7/13 17:20
'''
"""
list和numpy之间的相互转换
"""
import numpy as np
# numpy和list互相转换
list1 = [[1,2],
[3,4],
[5,6]]
# list --> numpy
arr = np.array(list1)
print(list1)# [[1, 2], [3, 4], [5, 6]]
print(arr) # [[1 2]
# [3 4]
# [5 6]]
# numpy --> list
list = arr.tolist()
print(list) #[[1, 2], [3, 4], [5, 6]]
print(arr) # [[1 2]
# [3 4]
# [5 6]]
5、维度变换,reshape,resize,flatten,ravel
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :LeastSquearMethod.py
@File :05_numpy.py
@IDE :PyCharm
@Author :Kandy凯
@Date :2022/7/13 17:33
'''
"""
维度变换,reshape,resize,flatten,ravel
"""
import numpy as np
data6 = np.random.normal(0,1,size=(4,6))
print(data6) # (4,6)
# reshape有返回值,返回一个新数组,总数不变,按照原来的顺序重新分组,维度变为(6,4)
data7 = data6.reshape((6,4))
print(data7)
# reszie无返回值,直接改变原数组
print(data6.shape) # (4,6)
data6.resize((6,4))
print(data6.shape) # (6,4)
# 拉平变换
data8 = np.random.normal(0,1,size=(4,6))
# flatten()有返回值,将数组变为一维的
print(data8.shape) # (4, 6)
data9 = data8.flatten()
print(data9.shape) #(24,)是一个一维数组
# ravel()
print(data8.shape)
data10 = data8.ravel()
print(data10.shape) # (24,)
"""
我查了一下这个ravel()的作用和flatten()作用是一样的,
都是将多维数组变为一维的,并且都有返回值(我看的有的
博主说没有返回值,但我测试了一下好像是有的,如果有错,
还望指正,相互学习嘛),但是尽量使用flatten(),因为
flatten()完全不会影响到原数组,完全是独立空间中返回
一个新的数组(如果有错还望指正),上述只表示自己目前
学习到的观点
"""
最后声明一下,首先我也是一个初学者,这个也是我参考的其他博主的,如果有说的不对的地方,还请各位多多指教。分享这个的目的:① 为了自己学习的需要 ② 帮助更多像我现在一样学机器学习懵逼的研0学生
谢谢参考!!!