数据科学领域5个最佳的Python库
Numpy/Scipy/Pandas/Matplotlib/Scikit-learn(TensorFlow)
Numpy(一)
矩阵回顾:
基本概念:
- 矩阵:矩阵的数组,即二维数组,其中向量和标量都是矩阵的特例
- 向量:是指1xn或者nx1的矩阵
- 标量:1x1的矩阵
- 数组:N维的数组,是矩阵的延伸
- 特殊矩阵
- 全0全1矩阵
- 单位矩阵
- 数组乘法(点乘)
- 数组乘法(点乘)是对应元素质之间的乘法
#import numpy as np
#一维数组
list_1=[1,2,3,4]
array1=np.array(list_1)
array1
Out: array([1, 2, 3, 4])
# 二维数组
list_2=[5,6,7,8]
array2=np.array([list_1,list_2])
array2
Out: array([[1, 2, 3, 4], [5, 6, 7, 8]])
array2.shape #数组的维度,对于矩阵,n 行 m 列
Out: (2, 4)
array2.size #数组元素的总个数,相当于 .shape 中 n*m 的值
Out: 8
array2.dtype #ndarray 对象的元素类型
Out:dtype('int64')
#转换类型
array3=np.array([[1.0,2,3],[4.0,5,6]])
array3
Out[7]:
array([[1., 2., 3.],
[4., 5., 6.]])
#间隔为2
array4 = np.arange(1,10,2)
array4
Out[11]: array([1, 3, 5, 7, 9])
#全0矩阵
np.zeros(5)
np.zeros([2,3])
#创建单位矩阵
np.eye(5)
#数组切片和索引
a = np.arange(10)
s = slice(2,7,2) # 从索引 2 开始到索引 7 停止,间隔为2 print (a[s])
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
print (a[s])
Out:[2 4 6]
b = a[2:7:2] # 从索引 2 开始到索引 7 停止,间隔为 2
#获取数组中(0,0),(1,1)和(2,0)位置处的元素。
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print (y)
Out:[1 4 5]
#实例获取了 4X3 数组中的四个角的元素。 行索引是 [0,0] 和 [3,3],而列索引是 [0,2] 和 [0,2]。
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
print ('我们的数组是:' )
print (x)
print ('\n')
rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]])
y = x[rows,cols]
print ('这个数组的四个角元素是:')
print (y)
我们的数组是:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
这个数组的四个角元素是:
[[ 0 2]
[ 9 11]]
#借助切片 : 或 … 与索引数组组合。
a = np.array([[1,2,3], [4,5,6],[7,8,9]])
b = a[1:3, 1:3] #第1行到第2行,第1列到第2列
c = a[1:3,[1,2]] #第1行到第2行,第1,第2列
d = a[...,1:] #切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同
print(b) print(c) print(d)
Out:
[[5 6]
[8 9]]
[[5 6]
[8 9]]
[[2 3]
[5 6]
[8 9]]