机器学习第一天----了解Numpy和Matplotlib
什么是Numpy基础包?
NumPy是Python中算法扩展包,它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),
以及用于数组快速操作的各种例程,包括数学,逻辑,形状操作,排序,选择,I / O离散傅立叶变换,基本线性代数,基本统计运算,随机模拟等等。
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。接下来我只叙述目前我使用到的方法,后续遇到仍会补充,其具体详情可查阅:https://www.runoob.com/numpy/numpy-dtype.html
1.创建ndarray数组
# coding:utf-8 import numpy as np a = np.array([0, 1, 2, 3, 4, 5.]) print(a)
其结果为
[0. 1. 2. 3. 4. 5.]
2.切片与索引
a.ndarray数组可通过内置slice(start,end,step)来截取数组中的元素,但不包括介素元素
# coding:utf-8 import numpy as np a = np.array([0, 1, 2, 3, 4, 5]) print(a) s=slice(0,4,2) print(a[s])
其结果为:
[0 1 2 3 4 5]
[0 2]
b.可以通过冒号分隔切片参数 start:stop:step 来进行切片操作
# coding:utf-8 import numpy as np a = np.array([0, 1, 2, 3, 4, 5]) print(a) s=slice(0,4,2) print(a[s]) b=a[0:4:2] print(a[b])
其结果为:
[0 1 2 3 4 5] [0 2] [0 2]
对数组的操作
1.reshape(arr, newshape, order='C'),在不改变数据的情况下改变数组形状。
- arr要修改成数组的形状
- newshape是整数,要与要修改的形状相适应
- order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'k' -- 元素在内存中的出现顺序。
# coding:utf-8 import numpy as np a = np.array([0, 1, 2, 3, 4, 5]) print("原始数组:",a) b=a.reshape(3,2) print("改变后的数组:\n",b)
其结果为:
原始数组: [0 1 2 3 4 5] 改变后的数组: [[0 1] [2 3] [4 5]]
2.ndarray.flat 是一个数组元素迭代器
# coding:utf-8 import numpy as np a = np.array([0, 1, 2, 3, 4, 5]) print("原始数组:",a) b=a.reshape(3,2) print("改变后的数组:\n",b) print("迭代输出:") for i in b.flat: print(i)
其结果为:
原始数组: [0 1 2 3 4 5] 改变后的数组: [[0 1] [2 3] [4 5]] 迭代输出: 0 1 2 3 4 5
3.numpy.genfromtxt用于处理数据矩阵
numpy.genfromtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None)[source]¶
- fname:待处理数据的文件名
- delimiter:数据处理的分割方式
- dtype:数据更改的类型
import numpy as np import scipy as sp import matplotlib.pyplot as plt '''对网络请求数据的处理''' #数据获取处理操作 data=np.genfromtxt("F:\SOFT DOWNLOAD\\1400OS_Code\\1400OS_01_Codes\data\web_traffic.tsv",delimiter="\t") print(data.shape)
(743, 2)
其结果表明此数据中包含有743个二维数据点
Matplotlib与Numpy一同使用,使数据分析达到可视化的效果
安装matplotlib后无法正常使用,导入依赖库backports.functools-lru-cache
# coding:utf-8 # noinspection PyUnresolvedReferences import numpy as np # noinspection PyUnresolvedReferences import matplotlib.pyplot as plt #数据 x=np.arange(1,10) y=x #设置坐标轴 plt.scatter(x,y) #设置图像名称 plt.title("web") #设置横,纵坐标 plt.xlabel("X") plt.ylabel("Y") plt.plot(x,y) #将图像显示出来 plt.show()
生成的图像: