Python Numpy模块笔记总结

简介

  • 强大的N维数组对象:ndarray
  • 对数组结构数据进行计算(不用遍历循环
  • 具备随机数、线性代数、傅里叶变化等功能

基础数据结构

import numpy as np
# 创建一个数组, 数组由数据和描述数组的元数据组成
ar = np.array([1, 2, 3, 4, 5, 6, 7])
ar1 = np.arange(7)                                 # 返回0到6, 整型
ar2 = np.arange(7.0)                               # 返回0.0-6.0, 浮点型
ar3 = np.linspace(1.0, 7.0, num=5)                 # 返回[start, end]上计算num个均匀间隔的样本
ar4 = np.linspace(1.0, 7.0, num=5, endpoint=False) # endpoint为真,则停止是最后一个样本; 否则,不包括在内。默认值是True。
ar5 = np.linspace(1.0, 7.0, num=5, retstep=True)   # retstep为真,则返回2个元素的元组,第1个元素为array, 第2个元素为步长实际值。
ar6 = np.zeros(7)                                  # 生成7个元素全为0的一维数组
ar7 = np.zeros((2,5))                              # 生成2*5个元素全为0的二维数组
ar8 = np.ones(7)                                   # 生成7个元素全为1的一维数组
ar9 = np.ones((2, 5))                              # 生成2*5个元素全为1的二维数组
ar10 = np.eye(5)                                   # 生成对角线全为1的方阵
# ar元数据
print(ar.ndim)     # 数组维度个数
print(ar.shape)    # 数组的维度, shape为(n, m)
print(ar.size)     # 数组的元素总数, 对于n行m列的数组, 元素总数为n*m
print(ar.dtype)    # 数组中元素类型
print(ar.itemsize) # 数组中每个元素字节大小, int32为4字节, float64为8字节

索引及切片

import numpy as np
# 一维数组索引及切片
ar = np.arange(20)
ar[2]
ar[3:6] # 获取[3,6)的结果
#二维数组索引及切片
br = np.arange(20).reshape(4, 5)
br[2]       # 获取下一个维度的元素,所以是一维数组
br[2][1]    # 二次索引,得到一维数组中一个值
br[2, 1]    # 切片数组中第2行,第1列的值
br[1:3]     # 切片为两个一维数组组成的二维数组
br[:2, 1:]  # 切片数组中的1、2行, 2、3、4、5列
# 布尔型索引及切片
cr = np.arange(12).reshape(3, 4)
i = np.array([True, False, True])
j = np.array([True, True, False, False])
cr[i, :] # 在第一维度做判断,保留字段为True的行
cr[:, j] # 在第二维度做判断,保留字段为True的行

随机数

import numpy as np
# 生成标准正太分布的4*4样本值
a = np.random.normal(size=(4,4))
# 生成[0,1)之间的均匀分布随机浮点数或者N维浮点数组
a = np.random.rand() # 随机浮点数
b = np.random.rand(2,3) # 随机2维浮点数组
# 生成[0,1)之间正太分布的样本值, 这里与np.random.normal区别主要是其样本不是标准正太
c = np.random.randn(4, 4)
# 生成一个随机整数或者N维整数数组,取[low, high)之间随机整数,若high为None,则取[0,low)之间随机整数
d = np.random.randint(2)             # 生成1个[0,2)之间随机整数
e = np.random.randint(2, size=5)     # 生成5个[0,2)之间随机整数
f = np.random.randint(2, 6, size=5)  # 生成5个[2,6)之间随机整数
g = np.random.randint(2, size=(2,3)) # 生成[0,2)之间随机整数数组,shape为2*3
h = np.random.randint(2,6,(2,3)      # 生成[2,6)之间随机整数数组,shape为2*3
# 设置随机种子,可以让每次运行随机数结果一样, 注意是代码重复运行时随机数结果一样,不是重新再写行代码运行
rng = np.random.RandomState(1)
i = rng.randn(3,2)

通用函数

import numpy as np
# 矩阵转置
a = np.arange(60).reshape(3,4,5)
b = a.T  # shape为(5*4*3)
# 更改对象为新的数组,如有必要可重复填充所需数量的元素。注意resize函数没有返回值
c = np.arange(45)
c.resize(3,4,5)
# 数组复制     平均值   求最大值  求最小值  求标准差  求方差   求和
d = a.copy() c.mean()  c.max()  c.min()  c.std()  c.var()  c.sum()
# 按列求和
np.sum(c, axis = 0)
# 排序
np.sort(np.array([1,4,3,2,5,6]))
# 数组元素类型转换
e = d.astype(np.float64)
# hstack对于一维数组是直接拼接,若是多维数组则是最后一个维度的拼接
a = np.arange(5)      # [0 1 2 3 4]
b = np.arange(5, 9)   # [5 6 7 8]
ar = np.hstack((a,b)) # [0 1 2 3 4 5 6 7 8]

c = np.arange(20).reshape(4,5)
d = np.arange(12).reshape(4,3)
e = np.hstack((c,d)) # 最后一个维度的拼接,最终结果shape为(4,8)

# vstack对于一维数组则是行与行的拼接,若是多维数组则是第一个维度的拼接
a = np.array([0 1 2 3 4])
b = np.array([5 6 7 8 9])
e = np.vstack((a,b)) # [[0 1 2 3 4],[5 6 7 8 9]]

# stack拼接,按照axis值取拼接
a = np.arange(5)
b = np.arange(5, 10)
ar1 = np.stack((a,b)) # 默认axis = 0, [[0 1 2 3 4] [5 6 7 8 9]]
ar2 = np.stack((a,b), axis = 1) # [[0 5] [1 6] [2 7] [3 8] [4 9]]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值