python和SciPy速成

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)
# 1.2、访问创建出来数组的某一行或某一列
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)
# 1.3、通过NumPy可以直接进行算术运算(向量运算)
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
# 2.1、绘制线条图
my_array = np.array([[1,2,3],[2,4,6],[3,9,27]]) #定义绘图数据

plt.plot(my_array)  #初始化绘图
plt.xlabel('x axis')    #设定x轴
plt.ylabel('y axis')    #设定y轴
plt.show()  #结果见附图1

# 2.2、绘制散点图
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()  #结果见附图2
  • 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
# 3.1、Series【建立Series(n. 连续)时可以设定index,也可以像访问Numpy数组或字典一样来访问Series元素】
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
'''
# 3.2、DataFrame【DataFrame是一个可以指定行和列标签的二维数组,数据可以通过指定列名来访问特定列的数据】
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'])
# print('访问row1的数据:')
# print(my_dataframe['row1'])     #KeyError: 'row1'
'''
      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
    python和SciPy速成_第1张图片

  • 附图2
    python和SciPy速成_第2张图片

你可能感兴趣的:(机器学习,python,scipy,numpy)