机器学习第一天----了解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()

   生成的图像:

   

 

posted @ 2020-10-07 21:04  Ldeson  阅读(143)  评论(0)    收藏  举报