1、熟悉python的基本语法
2、熟悉Numpy、Matplotlib和Pandas【能够阅读和编写基于Python的机器学习的脚本】
- 1、NumPy入门
- NumPy为SciPy提供了基本的数据结构和运算,其中主要的是ndarrays多维数组,它提供了高效的矢量运算功能。
import numpy as np
my_array = np.array([1,2,3])
print(my_array)
print(my_array.shape)
'''
[1 2 3]
(3,)
'''
my_array = np.array([[1,2,3],[1,2,3],[1,2,3]])
print(my_array)
print(my_array.shape)
'''
[[1 2 3]
[1 2 3]
[1 2 3]]
(3, 3)
'''
my_array = np.array([[1,2,3],[1,2,3]])
print(my_array)
print(my_array.shape)
'''
[[1 2 3]
[1 2 3]]
(2, 3)
总结:
1、数组(矩阵)只有一个维度时,shape只有shape[0],返回的是该一维数组(矩阵)中元素的个数,通俗点说就是返回列数
2、数组有两个维度时,返回的就是一个元组,第一个数值表示行数,第二个数值表示列数
'''
print('='*40)
my_array = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(my_array)
print(my_array.shape)
print(f'第一行:{my_array[0]}')
print(f'最后一行:{my_array[-1]}')
print(f'倒数第二行:{my_array[-2]}')
print(f'访问第三列数据:{my_array[:,2]}')
print(f'访问第二行和第三列数据:{my_array[1,2]}')
'''
[[1 2 3]
[4 5 6]
[7 8 9]]
(3, 3)
第一行:[1 2 3]
最后一行:[7 8 9]
倒数第二行:[4 5 6]
访问第三列数据:[3 6 9]
访问第二行和第三列数据:6
总结:
1、根据你定义的数组形状来访问
2、特点是序列索引都是从0开始
3、如果是二维数组array[行,列]
'''
print('='*40)
my_array1 = np.array([[1,2,3],[1,2,3],[1,2,3]])
my_array2 = np.array([[1,1,1],[2,2,2],[3,3,3]])
print(f'向量加法:\n{my_array1 + my_array2}')
print(f'向量乘法:\n{my_array1 * my_array2}')
'''
向量加法:
[[2 3 4]
[3 4 5]
[4 5 6]]
向量乘法:
[[1 2 3]
[2 4 6]
[3 6 9]]
总结:
1、这里向量乘法就是单纯的对应位相乘
'''
- 2、Matplotlib入门
- 1、Matplotlib是Python中著名的2D绘图库,使用方法比较简单,按照下面三步进行就能很简单地完成绘图:
- 1.1、调用plot()、scatter()等方法,并为绘图填充数据。数据是NumPy的ndarray类型的对象。
- 1.2、设定数据标签,适用xlabel()、ylabel()方法。
- 1.3、展示绘图结果,适用show()方法。
- 2、在 链接 中提供了超过100种示例,具体参考Matplotlib API的说明。
import numpy as np
import matplotlib.pyplot as plt
my_array = np.array([[1,2,3],[2,4,6],[3,9,27]])
plt.plot(my_array)
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.show()
my_array1 = np.array([4,7,8])
my_array2 = np.array([11,22,33])
plt.scatter(my_array1,my_array2)
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.show()
- 3、Pandas入门
- 1、Pandas提供了用于机器学习的复杂数据类型:矢量运算方法和数据分析方法。Pandas也提供了多种数据结构。
- 2、series(★★★):一维数组,与NumPy中的一维Array类似。二者与Python基本数据结构List也很相近,区别是:List
中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效地使用内存,提高运算效率。
- 3、Time-Series:以时间为索引的Series。
- 4、DataFrame(★★★):二维的表格型数据结构。很多功能与R语言中的data.frame类似。可以将DataFrame理解为Series的容器。
- 5、Panel:三维数组,可以理解为DataFrame的容器。
- 6、Pandas是一个功能强大的对数据进行切片的工具,Pandas API参考官网 链接
import numpy as np
import pandas as pd
my_array = np.array([1,2,3])
index =['a','b','c']
my_Series = pd.Series(my_array,index=index)
print(f'my_Series:\n{my_Series}')
print(f'Series中的第一个元素:{my_Series[0]}')
value = my_Series['c']
print(f'Series中的c索引元素:{value}')
'''
my_Series:
a 1
b 2
c 3
dtype: int32
Series中的第一个元素:1
Series中的c索引元素:3
'''
my_array = np.array([[1,2,3],[2,3,4],[3,4,5]])
row_index = ['row1','row2','row3']
col_name = ['col1','col2','col3']
my_dataframe = pd.DataFrame(data=my_array,index=row_index,columns=col_name)
print(my_dataframe)
print('访问col3的数据:')
print(my_dataframe['col3'])
'''
col1 col2 col3
row1 1 2 3
row2 2 3 4
row3 3 4 5
访问col3的数据:
row1 3
row2 4
row3 5
Name: col3, dtype: int32
'''
附录
-
附图1
-
附图2