您的当前位置:首页正文

(1)Python数据分析-Numpy相关

2024-11-23 来源:个人技术集锦

本文是Numpy相关介绍,如果需要了解Pandas和Matplotlib的知识,可以看我写的另外两篇博客,如下:

Numpy导入

import numpy as np

部分Python知识介绍

  • / - 除法

  • // - 整除,向下取整

  • ** - 乘方

  • math.sin - sin()在math库内

  • 字典遍历
    for key,val in dict.items():
    print(key,val)

  • 函数map,映射作用,可替代循环
    out = list(map(func, list))

  • 函数filter,映射后过滤,保留结果为True的项
    out = list(filter(BOOL类型的 func, list))

Numpy相关

  • 创建ndarray,可以传入列表、元组、两者混合物[(),[]]
    dtype 可指定数据的类型
    a = np.array([1,2,3,4],dtype=int)

  • 检测a是否为ndarray
    type(a)

  • 检测a中数据的类型
    a.dtype

  • 判定a是几维数组
    a.ndim

  • 判定a中数据的总数
    a.size

  • 判定a的形状
    a.shape

矩阵生成

生成全0/全1矩阵,传入[3,3]或者(3,3)均可,不可np.zeros(3,3)

a = np.zeros((3,3)) 
a = np.ones([4,4])

生成序列0-9,默认间隔为1

np.arange(0,10)

生成序列[0,3,6,9],间隔为3

np.arange(0,12,3)

生成0-12间的序列(包括12),[0,4,8,12],一共4个数

np.linspace(0,12,4)

随机数部分

  • 生成0-1间的随机数
    np.random.random()

  • 生成low - high-1 范围内的整数随机数,共total个
    np.random.randint(low,high,total)

数学运算

  • 加减乘除:
    ndarray的 ±*/ 运算 均是元素级的,逐个运算

  • 矩阵积:
    np.dot(A,B)
    A.dot(B)

  • numpy内置了许多数学函数
    np.sin()
    np.sqrt()

  • 矩阵变形
    A = np.arange(0,9).reshape(3,3)
    A.shape = (3,3)

  • 多维矩阵转化为一维
    A.ravel()

  • 选取某个元素
    A[1,2]
    A[[0,1],2]

  • 逐个遍历元素
    for i in A.flat:
    print(i)

  • 按照行或者列处理数据(axis=0 是列,=1 是行):
    np.apply_along_axis(np.mean, axis=0,arr=A)

数组合并

(1)多维数组两两合并

np.vstack((A,B)) 竖直合并
np.hstack((A,B)) 水平合并
np.concatenate([A,B],axis=0) 竖向合并
np.concatenate([A,B],axis=1) 横向合并

(2)一维数组多个合并

np.column_stack((a,b,c)) 每个一维数组作为一列
np.row_stack((a,b,c)) 每个一维数组作为一行

数组切分

(1)将数组分为两部分

[B,C] = np.hsplit(A,2) 竖着切分,分为两部分
[B,C] = np.vsplit(A,2) 横着切分,分为两部分

(2)将数组分为多部分

[A1,A2,A3] = np.split(A,[1,3],axis=1) 竖着切分,分为三部分,分为0列、1和2列、3列
[A1,A2,A3] = np.split(A,[1,3],axis=0) 横着切分,分为三部分,分为0行、1和2行、3行

数组复制,产生新对象

A.copy()

Numpy文件读写

(1)二进制文件读写

写:np.save('A', A)  保存为A.npy
读:A = np.load('A.npy')

(2)读取csv文件

names 是指数据是否有列标题,有则为True
data = np.genfromtxt('data.csv', deletechars=',', names=True)

data['列标题'] 取一列数据
data[0] 取一行数据
显示全文