欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-19 14:54:58
...

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

(2)Python数据分析-Pandas相关

(3)Python数据分析-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] 取一行数据
相关标签: python python