Python 数据分析-numpy学习笔记1

NumPy简介

  • 高性能科学计算和数据分析基础包,多为数组对象
  • ndarray,多维数组(矩阵),具有适量运算能力,快速,节省空间
  • 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
  • 线性代数、随机数生成

ndarray对象

ndarray ,N维数组对象(矩阵)

  • ndim 属性,维度个数
  • shape 属性,各维度大小
  • dtype 属性,数据类型

创建多维数组(ndarray)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np

# np.array(colloection) collection为序列型对象(list),嵌套序列(list of list)
a = np.array([0,1,2,3,4,5]) #1维数组
aa = np.array([[0,1,2,3,4,5],[1,2,3,4,5,6]]) #2位数组
b = np.array((1,3,5,7,9))

#np.zeros(),np.ones() 指定大小的全0或者全1数组, 第一个参数是元组,用来指定大小
zeros = np.zeros((3,3))
print(zeros)
ones = np.ones((2,2))
print(ones)

# 生成指定形状的随机数组,参数表示行列高
random_array = np.random.rand(4)
print(random_array)
random_array2 = np.random.random((2,3))
print(random_array2)


# 根据start,end,以及步进 生成矩阵
arange_array = np.arange(1,10,2)
print(arange_array)

d = np.linspace(0,10,5) # 生成若干个 start与stop之间的平均值

数组切片

索引与切片

  • 一维数组的索引与列表的索引功能相似
  • 多维数组的索引

    • 取值是左闭右开
    • arr[r1:r2,c1:c2] r:行,c:列
    • arr[1,1] 等价于 arr[1][1]
    • [:] 代表整个维度的数据

数学运算

1
2
3
4
5
6
7
8
9
10
11
12
13
a = np.array([111,1,2,3,4])
b = np.array([111,11,22,33,44])

print('a+b',a+b)
print('a-b',a-b)
print('a*b',a*b) #只是把矩阵里的每一个数 对应相乘 得到另一个矩阵
print('a/b',a/b)
print('a<b',a<b)
print('a>b',a>b)
print('a == b',a == b)

print('a.dot(b)',a.dot(b)) # 矩阵乘法
print('np.dot(a,b)',np.dot(a,b))

常用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

# 重新设置维度 this.reshape
arange_array = np.arange(20)
print(arange_array.reshape((4,5)))

# 转换数据类型 this.retype
arange_array.astype(str)

# 转置
arange_array3 = arange_array2.T
arange_array4 = np.transpose(arange_array2)
arange_array5 = np.swapaxes(arange_array2,0,1)

#拼接
array = np.floor(10 * np.random.random((2, 2)))
array2 = np.floor(10 * np.random.random((2, 2)))
print(np.hstack((array, array2)))

# 浅复制
array.view()
# 深拷贝
array.copy()

# 求均值
np.mean()
# 求和
np.sum()
# 求最大
np.max()
# 求最小
np.min()
# 求标准差
np.std()
# 求方差
np.var()
# 求最大值的索引
np.argmax()
# 求最小值的索引
np.argmin()
# 求累加
np.cumsum()
# 求累乘
np.cumprod()
# 是否所有元素都满足条件
np.all()
# 是否至少一个元素满足条件
np.any()
# 求唯一值并返回排序结果
np.unique()

# 通用函数
# 向上最接近的整数
np.ceil()
# 向下最接近的整数
np.floor()
# 四舍五入
np.rint()
# 判断元素是否为NaN
np.isnan()
# 元素相乘,等同于数组的*操作
np.multiply()
# 元素相除,等同于数组的/操作
np.divide()