首页 > 其他分享 >Numpy学习笔记

Numpy学习笔记

时间:2024-01-17 20:33:13浏览次数:25  
标签:dtype stop 笔记 学习 索引 数组 np array Numpy

1、创建数组

直接创建数组

np.array([1,2,3,4])

创建指定形状和内容的数组

numpy.zeros(shape, dtype = float, order = 'C')
numpy.ones(shape, dtype = float, order = 'C')
numpy.empty(shape, dtype = float, order = 'C')
参数 描述
shape 数组形状
dtype 数据类型(可选)
order 可选,有"C"和"F"两个选项,分别代表行优先和列优先,在计算机内存中的存储元素的顺序

从数值范围创建数组

numpy.arange(start, stop, step, dtype)
参数 描述
start 起始值(默认0)
stop 终止值(不包含,即左闭右开)
step 步长(默认1)
dtype 数据类型(默认float64)
# 用于创建一个一维数组,数组是一个等差数列构成的
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
参数 描述
start 序列起始值
stop 序列的终止值,如果endpoint为true,该值包含于数列中
num 要生成的等步长的样本数量,默认为50
endpoint 该值为 true 时,数列中包含stop值,反之不包含,默认是True
retstep 如果为 True 时,生成的数组中会显示间距,反之不显示
dtype 数据类型
# 用于创建一个于等比数列
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
参数 描述
start 序列起始值(参数base的幂次)
stop 序列的终止值(参数base的幂次),如果endpoint为true,该值包含于数列中
num 要生成的等步长的样本数量,默认为50
endpoint 该值为 true 时,数列中包含stop值,反之不包含,默认是True
base 对数 log 的底数
dtype 数据类型

例子:

import numpy as np
# 默认底数是 10
a = np.logspace(1.0,  2.0, num =  10)  
print (a)

输出:

[  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]

从已有数组创建数组

numpy.asarray(a, dtype = None, order = None)
参数 描述
a 任意形式的输入参数,如列表、元组, 元组的元组, 元组的列表,多维数组
dtype 数据类型
order 可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序

2、数组索引和切片

数组的索引

简单的索引:

a[0,1]

按条件筛选元素

a[a < 3]
a[(a > 3) & (a % 2 == 0)] # 筛选出大于3且为偶数的元素

使用 slice 函数实现切片

数组的切片操作与 Python 中 list 的切片操作一样,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

import numpy as np
a = np.arange(10)
s = slice(2,7,2)   # 从索引 2 开始到索引 7 停止,间隔为2
print (a[s])

输出:

[2  4  6]

使用冒号实现切片

通过冒号分隔切片参数 start:stop:step 来进行切片操作

import numpy as np
a = np.arange(10)
b = a[2:7:2]   # 从索引 2 开始到索引 7 停止,间隔为 2
print(b)

输出:

[2  4  6]

冒号的解释:如果只放置一个参数,如[2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(左闭右开)之间的项。

# 获取第1行,0到2列的元素(不包括2)
a[0, 0:2]
# 获取第1行所有元素
a[0, :]
a[0]

实现有跨度的切片操作:

a = np.array([1,2,3,4,5,6,7,8,9])
# 索引从0到9,每隔两个数取一个数
a[0:9:2]

输出:

array([1,3,5,7,9])

跨度可以为负数(逆向):

a = np.array([1,2,3,4,5,6,7,8,9])
a[4:1:-2]
# 将数组反向
a[::-1]

3、数组运算

乘法运算

点乘:

a = np.array([1,2,3])
b = np.array([4,5,6])
np.dot(a,b)

输出:

32

矩阵乘法:
@ 运算符等同与 np.matmul() 函数

a = np.array([[1,2],[3,4]])
b = np.array([[2,0],[0,2]])
a@b

输出:

array([[2,4][6,8]])

其他运算

如:sqrt(), sin(), cos(), log(), power()等

4、数组统计函数

返回数组中最小、最大元素:

a.min()
a.max()

返回数组中最小、最大元素的索引:

a.argmin()
a.argmax()

返回所有元素的和、平均值、中位数、方差、标准差

a.sum()
a.mean()
np.median(a)
a.var()
a.std()

对于以上函数,如果数组是多维数组,可指定额外参数 axis,axis为不同的值(如0和1)分别代表在指定的维度上进行运算。

标签:dtype,stop,笔记,学习,索引,数组,np,array,Numpy
From: https://www.cnblogs.com/yutian-blogs/p/17971105

相关文章

  • Doubly linked list【1月17日学习笔记】
    点击查看代码//Doublylinkedlist#include<iostream>usingnamespacestd;structnode{ intdata; node*next; node*prev;};//定义双向链表结构体node*A;node*getnewnode(intx){ node*temp=newnode; temp->data=x; temp->prev=NULL; temp->nex......
  • 【学习笔记】后缀自动机 SAM
    一.后缀自动机的定义SAM(SuffixAutomaton)是一种有限状态自动机,仅可以接受一个字符串的所有后缀。如果您不懂自动机,那么换句话说:SAM是一个有向无环图。称每个结点为状态,边为状态间的转移,每个转移标有一个字母,同一节点引出的转移不同。SAM存在一个源点\(S\),称为初始状态......
  • 【学习笔记】整体二分
    一.整体二分概念整体二分的主体思路就是把多个查询一起解决,是一个离线算法。其要求:询问的答案具有可二分性修改对判定答案的贡献互相独立,修改之间互不影响效果修改如果对判定答案有贡献,则贡献为一确定的与判定标准无关的值贡献满足交换律,结合律,具有可加性题目允......
  • 【学习笔记】线段树合并
    一.普通线段树合并线段树合并就是建立一棵新的线段树保存原有的两棵线段树的信息。两棵线段树当前要合并的点所表示的区间是一样的。线段树合并的过程很简单。如果A有p位置,B没有,新的线段树p位置赋成A,返回A;如果B有p位置,A没有,新的线段树p位置赋成B,返回A;如果合并到叶子结......
  • 【学习笔记】权值线段树
    一.权值线段树权值线段树即一种线段树,以序列的数值为下标。节点里所统计的值为节点所对应的区间\([l,r]\)中,\([l,r]\)这个值域中所有数的出现次数。举个例子,有一个长度为\(10\)的序列\(\{1,5,2,3,4,1,3,4,4,4\}\)。那么统计每个数出现的次数。易知\(1\)出现了\(2\)......
  • 【学习笔记】数论杂谈
    一.素数相关0.约定若无特殊说明,本部分做以下记号规定。\(p\in\mathbb{P}\),\(\mathbbP\)为质数集。\(\pi(n)\)表示\(1\)至\(n\)内的素数个数。\(P^{+}(n),P^-(n)\)分别表示\(n\)的最大/最小质因子。\(\nu_i\)表示\(i\)的可重质因子个数。1.素数定理\[\pi(......
  • 【学习笔记】数论函数与莫比乌斯反演
    一.数论函数基础数论函数:满足值域为整数的函数。本文下述的数若无特殊说明均为整数。若无特殊说明则钦定\(\displaystylen=\prod_{i=1}^kp_i^{e_i},p_i\in\mathbb{P}\)。\(\mathbb{P}\)表示质数集合,\(p_i\)互不相同。介绍几个常见的数论函数:\(I(n)\):恒等函数,无论\(n\)......
  • 【学习笔记】Segment Tree Beats/吉司机线段树
    一.区间最值操作本文对吉如一老师在\(2016\)年国家集训队论文中的线段树处理历史区间最值的问题的一些杂谈。区间最值笼统地指求区间的最值以及区间所有数对\(x\)取最值(即令\(a_i=\max/\min(a_i,x)\))这一类的查询与修改操作。HDU5306GorgeousSequence支持对区间......
  • 拓扑排序_学习记录
    拓扑排序_学习记录第一次在读入数据时被TLE……Whatis拓扑排序?拓扑排序——Topologicalsorting(所以说写函数名时用ts而不是tp),拓扑排序要解决的问题是给一个有向无环图的所有节点排序。顾名思义,就是可以把一个有向的无环的图中所有的点按照一定规则排序的算法……emm......
  • 学习笔记6
    Scala匿名函数(函数字面量)Scala中的匿名函数也叫做函数字面量,既可以作为函数的参数使用,也可以将其赋值给一个变量,在匿名函数的定义中“=>”可理解为一个转换器,它使用右侧的算法,将左侧的输入数据转换为新的输出数据,使用匿名函数后,我们的代码变得更简洁了。valtest=(x:Int)=>......