PYTHON_numpy

numpy 用于科学计算,记录如下。

一、数组

  • C数组中数据类型一致;python列表可不一致但numpy数组array中数据类型需一致
  • 如传进来的包含不同类型,则自动统一为同一类型,优先级:str>float>int

  • shift+tab:查看该函数的所有参数,tab:自动补全

1.1 列表 vs 数组:

a=[1,2,3,4,5]
for i in range(5):
    a[i]=a[i]+1

--列表需通过循环遍历计算。

import numpy as np
a=np.array([1,2,3,4,5])
a=a+1

--数组则利用 numpy 向量化功能。

1.2 创建数组:

import numpy as np
np.array(['1','2','3'],dtype=int)

--array() 可将列表转为 array,第一个参数为列表对象,第二个参数 dtype 可指定类型

---------------------------------------------

二、函数

2.1 生成 1 矩阵:

复制代码
np.ones(shape,dtype=None)
'''生成m行n列的二维数组'''
np.ones((m,n))
'''特别地,生成m行1列或1行n列的二维数组'''
np.ones((m,1))#[[1],[1],[1]]
np.ones((1,n))#[[1,1,1]]

'''生成m个元素的一维数组'''
np.ones(m)#[1,1,1]
np.ones(m,)

'''生成k个元素集合m行n列的三维数组'''
np.ones(k,m,n)#[[[1,1]],[[1,1]]]
复制代码

2.2 生成 0 矩阵:

np.zeros(shape,dtype=float)

2.3 生成填充矩阵:

np.full(shape,fill_value,dtype=None)

2.4 生成单位矩阵:

np.eye(N,M=None,k=0,dtype=float)

--对角线为 1,其他位置元素为 0;M 控制 1 的行数,k 控制对角线左右移动。

2.5 生成等差数列:

np.linspace(start,stop,num,endpoint,dtype=None)

--含终止数,除非 endpoint 设定为 False。

2.6 生成等步长序列:

np.arrange(start,stop,dtype=None)

2.7 生成随机整数:

np.random.randint(low,high,size,dtype)

--参数 size 类似 shape。

2.8 生成正态分布随机数:

'''标准正态分布'''
np.random.randn(num)
'''普通正态分布'''
np.random.normal(μ,σ)

2.9 生成 0~1 随机数:

np.random.random(size)

2.10 生成 0~n 随机索引:

np.random.permutation(n)

---------------------------------------------

三、属性

'''初始化'''
arr=np.random.randint(0,100,size=(5,4,3))

3.1 获取数组维度:

arr.ndim

3.2 获取数组形状:

arr.shape

3.3 获取数组总长度:

arr.size

3.4 获取数组中的元素类型:

arr.dtype

 ---------------------------------------------

四、索引 & 切片

4.1 列表 vs 数组:

'''列表取数方式'''
l=[[1,2,3],[4,5,6]]
l[0][0]
'''数组取数方式'''
arr=array(l)
l[0,0]

--array 除了特有的取数方式外,还兼容列表的取数方式。

4.2 多次取数:

arr1=array([1,2,3])
arr1[0,1]
arr1[0,1,2,0,1,2]

--在数组以特有的方式取数时,若超出数组维度范围,则为多次取数。

4.3 布尔列表取数:

arr=np.array([1,2,3])
bool_arr=[True,True,False]
arr[bool_arr]

--按布尔列表取数,前提是布尔列表长度需与原数组相同。

4.4 条件取数:

arr=np.array([1,2,3])
arr[arr>2]

--取得数组中大于2的元素。

4.5 行 / 列切片:

import numpy as np
arr2=np.random.randint(0,100,size=(5,6))
'''行切片'''
arr2[0:2]
'''列切片'''
arr2[:,0:2]

--切片前的维度不可省略,切片后的可以。

4.6 行 / 列正反向:

'''行反向'''
arr2[::-1]
'''列反向'''
arr2[:,::-1]

---------------------------------------------

五、统计计算

'''初始化'''
arr=np.array([1,2,3])

1. 均值:

arr.mean()

2. 最值:

display(arr.max(),arr.min())

--多个输出结果时,display 可优化输出的结果格式。

3. 最值的索引:

display(arr.argmax(),arr.argmin())

4. 标准差、方差:

display(arr.std(),arr.var())

5. 中位数:

np.median(arr)

6. 百分位数:

np.percentile(arr,[0.25,0.5,0.75])

--常用于异常值检测。

---------------------------------------------

六、存在 / 全为

1. 存在:

bool_arr=np.array([True,False])
bool_arr.any()

--检测布尔数组是否至少存在一个True。

bool_arr=arr>2
bool_arr.any()

--检测数组中是否至少存在一个满足条件的值。

2. 全为:

bool_arr=np.array([True,False])
bool_arr.all()

--布尔数组是否全为True。

bool_arr=arr>2
bool_arr.all()

--数组中是否全为满足条件的值。

---------------------------------------------

七、广播机制

arr=np.array([1,2,3])
arr+3

--自动填充,但行列结构均不同的多维数组间无法使用。

---------------------------------------------

八、排序

 

-END

 https://www.bilibili.com/video/BV13P4y1f7db?p=5&vd_source=efad7d657bca9605bbc1590a798ed819

posted @   找回那所有、  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
这里到底了哦~(●'◡'●)
点击右上角即可分享
微信分享提示