NUMPY学习笔记

本文介绍了Numpy库,一个用于快速处理数组的计算库,强调了其ndarray数据结构和优势。主要内容包括Numpy的引入、基本操作如创建数组、获取数组信息、切片和索引、数组分析以及读取本地文件的方法。
摘要由CSDN通过智能技术生成

 一.Numpy的简介

1 什么是Numpy?

    Numpy(Numerrical Python)是一种用于快速处理任意维度数组的计算库.

2 为什么要用Numpy?

   Numpy对于常见的数组和矩阵的处理,会比Python更快速简洁

   这得益于其使用ndarray来处理数据

ndarray =n*d+array = n维度的整列 

  其用于容纳相同类型的多维数组 .

  并行化计算使其支持向量化操作

  底层用C语言编写,不受Python解释器限制,效率高于纯Python代码

二.Numpy的基本操作

1 创建数组

指定数组

import numpy as np
#引入Numpy库
a = np.array([1, 2, 3])
#创建一维数组
b = np.array([[1,2,3], [4, 5, 6]])
#创建二维数组
c = np.arange(0, 10, 2)
#创建一个从0开始到9为止,步长为2的数组(用法类似于range)
d = linspace(0,10,6)
#创建一个在[0,10]的6个等距向量

随机数组

利用Numpy里的random创建随机数组

rand(行数,列数,层数)随机值
randn(行数,列数,层数)符合标准正态分布的随机值
randint(low,high,size)位于[low,high)的整数
random_integers(low,high,size)位于[low,high]的整数
random(size)/sample(size)
/random_sample(size)/ranf(size)
位于[0,1)的随机浮点数
choice(数组或int)位于数组内或np.arange(int)内的随机数

例如:

np.random.randint(0, 2, size=(2,3))
#创建一个从0开始到1为止,形状为2行3列的数组
[[0 1 0]
 [1 1 0]]
#结果输出

特殊数组

zeros((x,y))创建一个x行y列的数组,其值全为0
ones((x,y))创建一个x行y列的数组,其值全为1
full((x,y),z)创建一个x行y列的数组,其值全为z
eye(x)创建一个x行x列的数组,除左上对角线为1,其余值全为0

例如:

np.eye(3)
#创建该数组
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
#结果输出

2 获取数组信息

shape形状
size元素总个数
dtype元素类型
ndim维度

例如:

a = [[1,2]
     [3,4]]
#引入数据
a.shape
#求其形状
(2,2)
#输出

3 数组的切片和索引

数组调整

reshape(数组,size)将数组变成指定形状
ravel(数组)二向箔
swapaxes(数组,a轴,b轴)交换数组的轴
moveaxis(数组,a轴,b轴)将数组里的a轴移至b轴

ps 在二维里,axis行 = 0,axis列 = 1

     在三维里,axis层 = 0,axis行 = 1,axis列 = 2

数组连接

concatenate(数组1,数组2,连接轴)将数组按照指定轴连接
stack((数组1,数组2),连接轴)将数组按照指定轴连接
hstack(数组1,数组2)水平堆叠数组
vstack(数组1,数组2)垂直堆叠数组
dstack(数组1,数组2)深度堆叠数组

数组索引

a = [1,2,3,4,5]
a[1] = 2
#一维数组索引
b = [[ 0  1  2  3  4]
     [ 5  6  7  8  9]
     [10 11 12 13 14]
     [15 16 17 18 19]]
b[1,2] = 7
#二维数组单个索引
b[[0,1],[2,3]] = [2 8]
#二维数组多个索引
b[a>1]
#布尔索引,取大于1的元素
b[(a>1),(a<10)]
#布尔索引,取1到10的元素

数组切片

与Python中对list的切片方式相同

[:a]从头开始到a结束
[a:]从a开始到尾
[::a]每隔a项取一个元素
where(a>b,x,y)将数组a里大于b的元素替换为x,其余变为y
clip(a,b)将数组里小于a的元素替换为a,大于b的替换为b

例如:

a = [[ 5 11 12  8  9]
     [11  5 15  0 16]
     [ 1 12  7 13  6]
     [18  5 18 11 10]]
b = np.where(a<10,10,20)
#将数组里小于10的替换为10,其余变为20
[[10 20 20 10 10]
 [20 10 20 10 20]
 [10 20 10 20 10]
 [20 10 20 20 20]]
#结果输出

4 数组的分析

sum(a,轴)按照轴将数组a的元素相加求和
median(a,轴)求数组a的中位数
max(a)求数组里的最大值
mean(a,轴)按照轴将数组a的元素相加求平均数
std(a,轴)按照轴求数组a的标准差
var(a,轴)按照轴求数组a的方差
ptp(a)求数组a的极差

例如:

a = [[ 5 11 12  8  9]
     [11  5 15  0 16]
     [ 1 12  7 13  6]
     [18  5 18 11 10]]
b = py.sum(a,axis=0)
#求和
[35 33 52 32 41]
#结果输出

5 读取本地文件

import numpy as np
np.loadtxt(file_path,delimiter,dtype)
#              ^         ^       ^
#         这是文件路径 分割符号  数据类型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laxinton

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值