Python基础 —— 基本库(list\numpy\tqdm)

list

对于每一个元素都需要检查是哪种具体类型,时间损耗大。
L = [i for i in range(10)]
L[5] = “Machine Learning” 不报错

array

存储单一类型元素。以数组方式存储,不看做矩阵,不能进行矩阵运算。

import array
arr = array.array(‘i’,[i for i in range(10)])

arr[5] = “Machine Learning” # 会报错,只能存储单一类型。

numpy

numpy.array

存储单一类型元素,但能进行矩阵操作。

加载包

import numpy as np

列表元素赋值

nparr = np.array([i for i in range(10)])

nparr[5] = “Machine Learning” # 会报错,只能存储单一类型。
nparr[5] = 5.0 # 截位,隐式类型转换,按整数5存储

nparr2 = np.array([1,2,3.0]) # float64浮点类型

元素类型检查

通过nparr.dtype检查元素类型

np.zeros() 生成0

np.zeros(10) # 得到由10个浮点0组成的数组array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

np.zeros(10,dtype=int) # 整数0,参数2设置类型dtype=int

np.zeros((3,5)) # 传入二维的元组,得到3行5列矩阵
np.zeros(shape=(3,5),dtype=int)

np.ones() 生成1

np.full() 指定值矩阵

np.full(shape=(3,5), fill_value=666.6)

np.arange()

参数1:开始点;参数2:终止点(不包含);参数3:步长

np.arange(0,20,2)相当于使用[i for i in range(0,20,2)]

但range中不能使用浮点数。
而np.arange(0,20,0.2)可以正常运行。

np.linspace()

np.linspace(0,20,10) # [0,20]等长截取10个点

np.random

np.random.randint(0,10)
np.random.randint(4, 8, size=(3, 5)) # size取元组,生成三行五列矩阵,每个元素都是在[4,8)中随机取值

随机数:随机数生成器生成的伪随机数
使用随机种子np.random.seed(),每次生成同样的随机向量。
np.random.seed(666)
np.random.randint(4,8,size=(3,5))

随机浮点数生成
np.random.random((3,5)) #[0,1)之间均匀的浮点数

符合正态分布的浮点数
均值为0,方差为1:np.random.normal()
np.random.normal(0,1,(3,5))

指定均值为10,方差为100的浮点数:np.random.normal(10,100)

np.random.permutation()\shuffle()

函数shuffle与permutation都是对原来的数组进行重新洗牌(即随机打乱原来的元素顺序);

  • shuffle直接在原来的数组上进行操作,改变原来数组的顺序,无返回值。
  • permutation不直接在原来的数组上进行操作,而是返回一个新的打乱顺序的数组,并不改变原来的数组。
参数查询

np.random.normal?

help(np.random.normal)

reshape

np.arange(15).reshape(3,5)
np.arange() 创建一维数组,再通过reshape()转化为二维数组。

x.ndim

查看数组是几维数组

x.shape

返回元组,每个维度里的元素个数

x.size

元素个数

numpy.array的数据访问

使用python数据访问方法
一维数组:x[-1]
多维数组:x[(0,0)] \ x[2,2] 使用元组方式访问

切片访问:获得子数组或子矩阵

x[0:5] 访问[0,5)之间的元素
x[ : : 2] 设置访问步长
x[ : : -1] 倒数访问

x[:2, :3] 二维数组访问,前两行的前三列
不能使用x[:2][:3] [:3]会取x[:2]得到数组中的前三个元素

x[:, 0] #取一列

numpy:通过引用方式获取子矩阵(子矩阵、原矩阵互相影响)

x[:2, :3].copy() # 创建副本,子矩阵与原矩阵脱离关系

reshape:改变维度

x.shape 查看矩阵大小
x.ndim 维度
x.reshape(1,15) 得到1*15矩阵

区分一维向量与二维数组(矩阵)
一维向量:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 只有一个维度 十列一行
reshape(1,10)后得到二维数组:array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]) 两个维度 一行十列

x.reshape(-1,10) 行数默认,列数为10
x.reshape(3,-1) 若元素个数除不尽3,每行元素则不固定,报错

数组、矩阵的合并操作 concatenate

  • A = np.array([[1,2,3],[4,5,6]])
    np.concatenate([A, A])
    =》
    array([[1, 2, 3],[4, 5, 6], [1, 2, 3],[4, 5, 6]])
    A中有两个样本,每个样本有三个特征;又来两个样本;一共加起来四个样本。

  • np.concatenate([A, A], axis=1)
    axis 轴:沿着第二个方向(即列的方向)拼接
    =》
    array([[1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6]])

  • z = np.array([666, 666, 666])
    A二维矩阵 z一维向量,维数不同不能直接拼接
    np.concatenate([A, z.reshape(1,-1)])
    将z转变为1*3的二维矩阵
    np.vstack([A, z]) # 垂直方向堆叠
    np.hstack([A, B]) # 水平方向堆叠

分割操作 split

x1, x2, x3 = np.split(x, [3, 7])
分割点以数组形式传入
x1 = x[0:3]
x2 = x[3:7]
x3 = x[7:]

矩阵分割

A1, A2 = np.split(A,[2])
默认以第一个轴(行)分割

upper, lower = np.vsplit(A,[2])
left,right = np.hsplit(A,[2])

np.load()、np.save(): 读写磁盘数组数据

默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

np.savez() : 将多个数组保存到一个文件中

savez函数输出的是一个压缩文件(扩展名为npz),其中每个文件都是一个save函数保存的npy文件,文件名对应于数组名。load函数自动识别npz文件,并且返回一个类似于字典的对象。

tqdm: 显示进度条

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值