美文网首页
数据分析之 numpy 模块

数据分析之 numpy 模块

作者: 王镇_ee87 | 来源:发表于2021-01-08 10:07 被阅读0次

import numpy as np
# 使用 array()创建一个数组
# 数组元素只能是一种类型,列表中可以有多中类型  字符串 > 浮点型 > 整型
ret = np.array([1, 2, 3])

[1 2 3]
数组的属性及元素类型

print(img_arr.shape, "形状")  # 形状
print(img_arr.ndim, '维度')  # 维度
print(img_arr.size, '元素个数')  # 元素个数
print(img_arr.dtype, '数组元素类型')  # 数组元素类型
print(type(ret), '数组类型')  # 数组类型 <class 'numpy.ndarray'>

img_arr(dtype="XXX")  # 可以设定数据类型
img_arr.dtype = "XXX"  # 可以修改数据类型

数组的创建方式
ret1 = np.ones(shape=(4, 5))  # 4行 5列


[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

ret2 = np.linspace(0, 100, num=20)  # 等差数列


[  0.           5.26315789  10.52631579  15.78947368  21.05263158
  26.31578947  31.57894737  36.84210526  42.10526316  47.36842105
  52.63157895  57.89473684  63.15789474  68.42105263  73.68421053
  78.94736842  84.21052632  89.47368421  94.73684211 100.        ]

ret3 = np.arange(0, 100, step=2)  # 步长为 2


[ 0  2  4  6  8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46
 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94
 96 98]


np.random.seed(0)  # 固定随机性, 不加数组就是随机的
ret4 = np.random.randint(0, 100, size=(3, 4))


[[44 47 64 67]
 [67  9 83 21]
 [36 87 70 88]]


numpy 的索引和切片操作
# 索引与列表同理
arr = np.random.randint(0, 100, size=(5, 7))

[[96 61 12 70 74 21 57]
 [16 66 95 52 75 28 12]
 [17 54 45 40 36 41 65]
 [88 57 90  9 48 32  7]
 [50 62 54 83 24 45 47]]


arr[0][2] # 第一个参数为行 第二个参数是位置

12

arr[:,0:1][1]  # 第一个参数为列 第二个参数是位置

[16]

切片 

ret = arr[0:2]  # 切出数组的前两行


[[96 61 12 70 74 21 57]
 [16 66 95 52 75 28 12]]

ret = arr[:, 0:1]  # 切出数组的第一列  逗号左边是行 右边是列


[[96]
 [16]
 [17]
 [88]
 [50]]

ret = arr[0:2, 0:2]  # 切出数组的前两行的前两列


[[96 61]
 [16 66]]

# 数据反转 参数位置 行:列:颜色
arr1 = arr[::-1,:] # 行倒置


[[50 62 54 83 24 45 47]
 [88 57 90  9 48 32  7]
 [17 54 45 40 36 41 65]
 [16 66 95 52 75 28 12]
 [96 61 12 70 74 21 57]]


arr2 = arr[:,::-1] # 列倒置


[[57 21 74 70 12 61 96]
 [12 28 75 52 95 66 16]
 [65 41 36 40 45 54 17]
 [ 7 32 48  9 90 57 88]
 [47 45 24 83 54 62 50]]

arr3 = arr[::-1,::-1] # 数据倒置   

[[47 45 24 83 54 62 50]
 [ 7 32 48  9 90 57 88]
 [65 41 36 40 45 54 17]
 [12 28 75 52 95 66 16]
 [57 21 74 70 12 61 96]]

变形 reshape

# 变形 reshape                                          
                                                      
arr = np.random.randint(0,20,size=(3,4))    
          
[[19  4 16  7]
 [ 2  1 14  1]
 [15 15  2  5]]                                   
                                 
                                                      
# 将二维数组改成一维数组                                         
ret = arr.reshape((12,))  # 参数必须等于原来的size 大小都不行       

[19  4 16  7  2  1 14  1 15 15  2  5]                                     
                                                                                                          
# 将一维数组改成二维数组                                         
                                                      
print(ret.reshape((2,6)))  # 保证容量一致 (6,2)(3,4)都行      

[[19  4 16  7  2  1]
 [14  1 15 15  2  5]]

级联操作
arr = np.random.randint(0,20,size=(3,4))

[[17  9  8  2]
 [16 15 16 15]
 [ 4  6 16 12]]

ret= np.concatenate((arr,arr),axis=1)  # 0 竖向 1 水平

[[17  9  8  2 17  9  8  2]
 [16 15 16 15 16 15 16 15]
 [ 4  6 16 12  4  6 16 12]]

聚合操作 sum-求和 max-最大值 min-最小值 mean-平均数 没有全展示,可以自己试一下

arr = np.random.randint(0,20,size=(3,4))
print(arr)

[[ 8  9 19 16]
 [16 13 13 17]
 [ 0 16  0 10]]

print(arr.sum(axis=None))  

137

print(arr.sum(axis=1))   

[52 59 26]

print(arr.sum(axis=0))   

[24 38 32 43]

常用的数学函数

# sin(), cos(), tan() around()

arr = np.random.randint(0,10,size=(2,2))

[[2 0]
 [8 2]]

print(np.sin(arr))

[[0.90929743 0.        ]
 [0.98935825 0.90929743]]

arr1 = np.random.random(size=4)
print(arr1+19)

[19.74596448 19.15807632 19.37253376 19.47411304]

print(np.around(arr1+249, decimals=-2)) # 1 保留小数点后一位 2 保留后两位  0 不保留小数 -1 看个位 -2 看十位

[200. 200. 200. 200.]

常用的统计函数
arr = np.array([[22, 24, 25, 20, 18], [20, 18, 30, 29, 22]])
print(np.amin(arr, axis=1))  # 计算数组中元素沿指定轴的最大值最小值  1 竖直 0 水平
[18 18]
print(np.amax(arr,axis=0))

[22 24 30 29 22]

print(np.std(arr))  # 标准差 数据波动情况 公式: std = sqrt(mean((x-x.mean())**2))

3.9949968710876362 

print(np.var(arr))  # 方差 标准差的平方

15.960000000000003

矩阵相关


# 矩阵

arr = np.array([[1,2],[3,4]])
arr1 = np.array([[1,2],[1,0]])

print(arr+arr1) # 矩阵相加

[[0 0]
 [2 4]]

print(arr-arr1) # 矩阵相减

[[0 0]
 [2 4]]

print(np.dot(arr,arr1)) # 行和列相乘的和为新元素 [(1*1 + 2*1 ,1*2 + 1*0),(3*1 + 4*1 , 3*2 + 4*0 ) ]

[[3 2]
 [7 6]]

相关文章

网友评论

      本文标题:数据分析之 numpy 模块

      本文链接:https://www.haomeiwen.com/subject/wiobwktx.html