Python数据分析复习整理(numpy)

numpy

import numpy as np

创建多维数组

# 使用列表创建ndarray数组
data = [1,3,5,7]
array = np.array(data)
array
array([1, 3, 5, 7])
# 使用元组创建ndarray数组
data = (1,3,5,7)
array = np.array(data)
array
array([1, 3, 5, 7])
# 使用多维数组创建ndarray数组
data = [[1,2,3,4],[5,6,7,8]]
array = np.array(data)
array
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
# 生成指定dtype的ndarray数组
data = [1,3,5,7]
array = np.array(data,dtype = 'float64')
array.dtype
dtype('float64')
# 使用arange函数创建ndarray数组
warray = np.arange(1,10,2)
# 三个参数分别为起始值,终止值,步长(前闭后开区间)
warray
array([1, 3, 5, 7, 9])
# 使用zeros函数创建全0数组(1维)
warray = np.zeros(4)
warray
array([0., 0., 0., 0.])
# 使用zeros函数创建全0数组(2维)
warray = np.zeros([3,5])
# 三行五列
warray
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
# 使用ones函数创建全1数组(1维)
warray = np.ones(4)
warray
array([1., 1., 1., 1.])
# 使用ones函数创建全1数组(2维)
warray = np.ones([4,3])
# 四行三列
warray
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])

ndarray对象属性

import numpy as np
warry = np.array([[1,2,3,4],[2,3,4,5],[3,5,8,7]])
warry
array([[1, 2, 3, 4],
       [2, 3, 4, 5],
       [3, 5, 8, 7]])
# 秩,数据轴的个数
warry.ndim
2
# 数组的维度
warry.shape
(3, 4)
# 数组元素的个数
warry.size
12
# 数组的数据类型
warry.dtype
dtype('int32')
# 数组中每个元素的字节大小
warry.itemsize
4
# 设置数组的形状
warry.shape = 2,6
warry
array([[1, 2, 3, 4, 2, 3],
       [4, 5, 3, 5, 8, 7]])

生成随机数

# 生成随机整数
arr = np.random.randint(100,200,size=(2,4))
arr
array([[144, 170, 179, 185],
       [114, 127, 146, 134]])
# 生成[0,1]的随机数组
# 1行5列
arr = np.random.rand(5)
arr
array([0.20542233, 0.20794384, 0.74888448, 0.26553629, 0.3132238 ])
# 生成[0,1]的随机数组
# 2行4列
arr = np.random.rand(2,4)
arr
array([[0.71962413, 0.98679998, 0.09635121, 0.01496932],
       [0.75280209, 0.24139988, 0.6683052 , 0.31580649]])

数组变换

arr = np.arange(10)
arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 修改维度为5行2列
arr = arr.reshape(5,2)
arr
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])
# 当列数为-1时,自动匹配列数(总数除以行数必须为整数)
arr = arr.reshape(2,-1)
arr
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])

数组合并

arr1 = np.arange(6).reshape(2,3)
arr1
array([[0, 1, 2],
       [3, 4, 5]])
arr2 = arr1
arr2
array([[0, 1, 2],
       [3, 4, 5]])
# 横向合并,法一:
arr3 = np.hstack((arr1,arr2))
arr3
array([[0, 1, 2, 0, 1, 2],
       [3, 4, 5, 3, 4, 5]])
# 横向合并,法二:
arr4 = np.concatenate((arr1,arr2),axis = 1)
arr4
array([[0, 1, 2, 0, 1, 2],
       [3, 4, 5, 3, 4, 5]])
# 纵向合并,法一:
arr3 = np.vstack((arr1,arr2))
arr3
array([[0, 1, 2],
       [3, 4, 5],
       [0, 1, 2],
       [3, 4, 5]])
# 纵向合并,法二:
arr4 = np.concatenate((arr1,arr2),axis = 0)
arr4
array([[0, 1, 2],
       [3, 4, 5],
       [0, 1, 2],
       [3, 4, 5]])

数组分割

arr = np.arange(16).reshape(4,4)
arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
# 横向分割,法一:
np.hsplit(arr,2)
[array([[ 0,  1],
        [ 4,  5],
        [ 8,  9],
        [12, 13]]),
 array([[ 2,  3],
        [ 6,  7],
        [10, 11],
        [14, 15]])]
# 横向分割,法二:
np.split(arr,2,axis=1)
[array([[ 0,  1],
        [ 4,  5],
        [ 8,  9],
        [12, 13]]),
 array([[ 2,  3],
        [ 6,  7],
        [10, 11],
        [14, 15]])]
# 纵向分割,法一:
np.vsplit(arr,2)
[array([[0, 1, 2, 3],
        [4, 5, 6, 7]]),
 array([[ 8,  9, 10, 11],
        [12, 13, 14, 15]])]
# 纵向分割,法二:
np.split(arr,2,axis=0)
[array([[0, 1, 2, 3],
        [4, 5, 6, 7]]),
 array([[ 8,  9, 10, 11],
        [12, 13, 14, 15]])]

数组转置

arr = np.arange(12).reshape(3,4)
arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
# 转置矩阵
arr = np.transpose(arr)
arr
array([[ 0,  4,  8],
       [ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11]])
# 利用数组的T属性转换
arr.T
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

数组的索引

arr = np.arange(30).reshape(5,6)
arr
array([[ 0,  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]])
# 索引第0行第一列到第二列的元素
arr[0,1:3]
array([1, 2])
# 索引第2列的元素
arr[:,2]
array([ 2,  8, 14, 20, 26])
# 索引第0行第1,3,5列
arr[0,1::2]
array([1, 3, 5])

数组的运算

# 数组元素的追加
a = np.array([1,2,3])
b = a*2
b
array([2, 4, 6])
# 数组的四则运算
x = np.array([1,2,3])
y = np.array([4,5,6])
# 数组加法
x + y
array([5, 7, 9])
# 数组减法
x - y
array([-3, -3, -3])
# 数组相乘
x * y
array([ 4, 10, 18])
# 数组幂运算
x ** y
array([  1,  32, 729], dtype=int32)

数组中的统计与分析

# 使用sort函数进行排序
arr = np.array([2,9,5,6,7,5,8,3,11,20])
arr.sort()
arr
array([ 2,  3,  5,  5,  6,  7,  8,  9, 11, 20])
# 使用sort函数进行排序
arr = np.array([[2,9,5,6],[7,5,8,3],[11,20,2,5]])
# 横向排序
arr.sort(axis=1)
arr
array([[ 2,  5,  6,  9],
       [ 3,  5,  7,  8],
       [ 2,  5, 11, 20]])
# 纵向排序
arr.sort(axis=0)
arr
array([[ 2,  5,  6,  8],
       [ 2,  5,  7,  9],
       [ 3,  5, 11, 20]])
# 利用unique函数对数组进行去重
arr = np.array(['红','绿','红','蓝'])
np.unique(arr)
array(['红', '绿', '蓝'], dtype='<U1')
arr = np.arange(20).reshape(4,5)
arr
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
# 数组的和
np.sum(arr)
190
# 数组纵轴的和
np.sum(arr,axis=0)
array([30, 34, 38, 42, 46])
# 数组横轴的和
np.sum(arr,axis=1)
array([10, 35, 60, 85])
# 数组的均值
np.mean(arr)
9.5
# 数组的标准差
np.std(arr)
5.766281297335398
# 数组的最大值
np.max(arr)
19
# 数组的最小值
np.min(arr)
0
# 数组的方差
np.var(arr)
33.25

猜你喜欢

转载自blog.csdn.net/qq_29537269/article/details/107192815
今日推荐