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)分别代表在指定的维度上进行运算。

posted @ 2024-01-17 20:32  Yu_tiann  阅读(9)  评论(0编辑  收藏  举报