如果你跟现在一样在学习机器学习,但是对于代码里的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学生
谢谢参考!!!



