NnumPy的技术重点来了

NumPy库是Python中科学计算的核心库。它提供了一个高性能的多维数组对象,以及使用这些数组的工具。

 

1.安装及使用方法:

pip install numpy
import numpy as np

2.numpy数组

 可分为1维数组,2维数组,多维数组。

3.创建numpy数组

import numpy as np
a=np.array([1,2,3])
print(a)  # [1,2,3]

b = np.array([(1.5,2,3), (4,5,6)], dtype = float)
print(b)  # [[1.5 2.  3. ],[4.  5.  6. ]]

c = np.array([[(1.5, 2, 3), (4, 5, 6)], [(3, 2, 1), (4, 5, 6)]], dtype=float)
print(c)  # [[[1.5 2.  3. ], [4.  5.  6. ]], [[3.  2.  1. ], [4.  5.  6. ]]]

4.numpy初始化

import munpy as np

np.zeros((3,4))  # 创建3行4列的0数组  [[0.0, 0.0, 0.0, 0.0],[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]

np.ones((2,3,4),dtype=int16)  # 创建元素为1的三维数组  [[[1 1 1 1], [1 1 1 1], [1 1 1 1]],[[1 1 1 1], [1 1 1 1], [1 1 1 1]]]

np.arange(10,40,5)  # 创建从10开始,到40结束,步长为5的均匀数组 [10,15,20,25,30,35]


np.linspace(0,2,9)  # 创建等分数组 [0.0 , 0.25, 0.5, 0.75, 1.0,  1.25, 1.5, 1.75, 2.0]

np.full((2,3),7)  #创建2行3列的常量数组  [[7, 7, 7], [7, 7, 7]]

np.eye(3)  #创建3*3的单位矩阵 [[1.0, 0.0, 0.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]]

np.random.random(2,3)  # 创建2*3随机数组 [[0.62188069, 0.2986197,  0.26612047],[0.1910504,  0.40677743, 0.80493732]]

np.empty((2,3))  # 创建2*3空数组 [[0,0,0],[0,0,0]]

5.保存和载入

np.save("my_array", a)  # 将数组a保存到磁盘中,生成my_array.npy

np.savea("my_arrays", a, b)  # 将数组a, b保存到磁盘中,生成my_arrays.npyz

np.savetxt("myarray.txt", a, delimiter=" ")  # 将数组a保存成txt文件,以" "分隔

np.load("my_array.npy")  # 载入my_array.npy文件

np.loadtxt("my_file.txt")  # 载入my_file.txt文件

np.genfromtxt("my_file.csv", delimiter=',')  # 载入my_file.csv文件

6.数据类型

np.int64  # 带符号的64位整型
np.float32  # 32位浮点类型
np.complex  # 复数类型
np.bool  # 存储True和False值的布尔类型
np.object  # python对象类型
np.string_  # 固定长度的字符串类型
np.unicode_  # 固定长度的unicode类型

7.数组检查

a.shape  # 数组尺寸
len(a)  # 数组长度,即行数
b.ndim  # 数组维数
e.size  # 数组元素数量
b.dtype  # 数组元素数据类型
b.dtype.name  # 数组元素数据类型
b.astype(int)  # 将数组转化为不同的数组类型数组
 

8.帮助信息

np.info(np.dtype)  #np.dtype的说明方法

9.数组计算

g=a-b  # 数组a减去数组b 等价于 g=np.subtract(a,b)
g=a+b  # 数组a加数组b 等价于 g=np.add(a,b)
g=a/b  # 数组a除以数组b 等价于 g=np.divide(a,b)
g=a*b  # 数组a乘以数组b 等价于 g=np.multiply(a,b)
np.exp(b)  # 数组b求幂
np.sqrt(b)  # 数组b开方
np.sin(b)  # 数组b求正弦
np.cos(b)  # 数组b求余弦
np.log(b)  # 数组b求对数
np.dot(a,b)  # 点积 主要有向量点积和矩阵乘法

10.数组比较运算

a==b  # 判断数组a元素与数组b元素是否相等,等到与较高维数数组相同的布尔数组 等价于 np.array_equal(a,b)
a<2  # 判断数组a元素是否与2相等,得到与原数组维数一致的布尔数组

11.数组的聚合函数

a.sum()  # 数组求和
a.min()  # 数组最小值
b.max(axis=0) 数组的最大值,axis=0 代表列 , axis=1 代表行
b.cumsum(axis=1)  ## 按照所给定的轴参数返回元素的梯形累计和,axis=0,按照行累加。axis=1,按照列累加。axis不给定具体值,就把numpy数组当成一个一维数组
b.mean()  # 默认是对所有元素相加求平均值;axis = 0,对各列求均值;axis = 1,对各行求均值
b.median()  # 计算沿指定轴的均值,axis=0对应行,axis=1对应列返回数组元素的均值
a.corrcoef()  #计算矩阵的相关系数矩阵
np.std(b)  # 计算沿指定轴的标准差。返回数组元素的标准差  axis=0计算每一列的标准差,axis=1计算每一行的标准差

12.矩阵的复制

h=a.view()  # 创建具有相同数据的数组的视图
np.copy(a)  # 创建该数组的副本
h=a.copy()  # 创建该数组的深度副本

13.数组排序

a.sort()  # 数组元素从小到大排序
c.sort(axis=0)  #数组元素axis=1按行,axis=0按列排序

14.子集,切片,索引

b[0]  # 获取数组的0维
b[1]  # 获取数组的1维
b[1,2]  # 获取数组的1维,索引为2的数据 等价于 b[1][2]
b[1,2,1]  # 获取数组的1维,索引为2的行的索引为1的数据 等价于 b[1][2][1]
b[0:2]  # 获取数组的0维和1维
b[0:2,1]  # 获取数组的0维和1维,索引为1的数据
b[1,0,0:2]  # 获取数组的1维,索引为0的行,索引为0,1的数据
b[1,::-1]   # 获取数组第1维,逆序
b[1,0,::-1]  # 获取数组第1维,索引0行,逆序 
b[::-1,::-1]  # 获取数组第0、1维,逆序
b[1,:,:]  # 获取数组第1维全部数据 大于等价三维的数组,可等价于 b[1,...]

b[b<2]  # 获取小于2的元素组成一维数组

15.数组处理

# 矩阵转置
c=np.transpose(b)  # b的转置矩阵 等价于 c=b.T

# 将多维数组改为一维数组
c=np.ravel(b) 

# 重塑数组,不改变元素。a代表行,b代表列,-1表示自动计算
c=b.reshape(3,2)  # 三行两列  等价于 c=b.reshape(3,-1),一共只有6个元素

# 重塑数组,改变元素
a=arange(6)  # a  [0,1,2,3,4,5]
a.resize(2,2)  # a [[0,1],[2,3]] 改变了数组a的值

a=arange(6)  # a  [0,1,2,3,4,5]
np.resize(a,(2,2))  # 返回 [[0,1],[2,3]] ,a [0,1,2,3,4,5]没有改变数组a的值

np.append(a,b)  # 将数组b追加到数组a,获得一维数组

np.insert(a,1,5)  # 将数组a变成一维数组后在索引1的位置增加元素5,获得一维数组

np.delete(a,1)  # 将数组a变成一维数组后删除索引1的元素,获得一维数组

np.concatenate((a,d),axis=0)  # 将数组d追加在数组a后,获得新数组,数组的列元素个数要相等 axis=0,按列拼接,axis=1按行拼接

np.vstack(a,b)  # 按垂直方向(行顺序)堆叠数组构成一个新的数组,堆叠的数组需要具有相同的维度
np.hstack(a,b)  # 按水平方向(列顺序)堆叠数组构成一个新的数组,堆叠的数组需要具有相同的维度

np.r_(a,b)  # 是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。
np.c_(a,b)  # 是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等。

np.hsplit(a,2)  # 将数组a横向等分成两个数组
np.hsplit(a,(3,6))  # 数组a第三个和第六个索引前纵向切分数组
np.vsplit(a,2)  # 与np.hsplit相同,只不过它的作用为横向切分数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值