笔记:Numpy指令速查手册1

基本操作

导入 numpy 库

import numpy as np

一维数组创建

array = np.array([1,7,3,2,4])
array = np.arange(1,10,0.5) #arange(起点,终点,步长) 步长默认为1,终点不取
array = np.linspace(1,2,3) #在1,2和之间产生等间隔的3个数

还可以创建非整型的数组

mask = np.array([1,0,1,0,1,1],dtype=bool)

这会创建一个布尔型数组
array([ True False True False True True])

二维矩阵创建

array = np.array([[1,2],[2,1]]) # 这是一个列表嵌套array([list1,list2])
array = np.zeros((3,3)) # 3*3的零矩阵
array = np.ones((3,3)) # 3*3的单位矩阵
array = np.identity(3) # 主对角线为1的3*3矩阵
array = np.random.rand(3,2) # (3,2)表示矩阵大小

对于zeros和ones,还有扩展_like使其大小与某数组一致
例如

demo = np.array([[1,2],[3,4]])
array = np.zeros_like(demo) # 会生成一个与demo相同大小的2*2零矩阵

数组预览

array=np.array([[1,2,3],[4,5,6]])
对上面的数据就行预览的几种方法

array.shape

shape属性会返回一个(2,3),即2行3列——注意不要使用成shape()

array.size

size属性返回元素数,在本例中共6个元素,会返回一个整型6
与此相对的还有ndim

array.ndim

会返回维度,在本例中是2

array.dtyoe

dtype返回当前数据格式,本例中是int32

索引与切片

和Python一样,在Numpy中也有语法类似的切片

array1 = np.array([1,2,3,4,5,6])
array2 = np.array([[1,2,3],[4,5,6]])

不难看出,对于一维和二维的数据,切片时相当于列表嵌套

array1[1] # [2]
array1[1:3] # [2 3]
array1[2:6:2} # [3 5]
array1[-1:3:-1] # [6 5]

而在array2中

array2[1] # [4 5 6]
array2[1][2] # [6]

可以使用前面提到的创建布尔类型来进行索引

array = np.arange(0,100,10) # array([ 0 10 20 30 40 50 60 70 80 90])
mask = np.array([0,0,0,1,1,1,0,0,0,1],dtype=bool)
out = array[mask]

最终out变量存入的会是array([30 40 50 90])

out = np.where(array > 60) # (array([7, 8, 9], dtype=int64),)

where函数会提供符合条件的索引

out = array[np.where(array > 60)]

这样可以直接得出符合条件的元素
另外,bool类型还可以用在两个数组的对比上

x = np.array([0,1,2,3,4])
y = np.array([0,1,1,2,4))
out = x == y

[ True True False False True]

x = np.array([0,1,2,3,4])
y = np.array([0,0,1,2,4])
out1 = np.logical_and(x,y)
out2 = np.logical_or(x,y)

[False False True True True]
[False True True True True]

拓展

Numpy再使用random模块,可以实现随机取样

array = np.array([0,1,2,3,4,5,6,7,8,9])
random_array = np.random.rand(10) # 随机生成一个每位的范围在0-1的数组
mask = random_array > 0.5 # 大于0.5为True,反之False
array = array[mask]

结果可以自行测试

猜你喜欢

转载自blog.csdn.net/weixin_46251846/article/details/106679735