#1 Numpy & Pandas

1 numpy

调入头文件

import numpy as np

1.1 numpy属性

#生成一个array数组
array = np.array([[1, 2, 3],
		 		  [2, 3, 4]])
		 		  
#也可以这样 dtype表示array的元素类型
np.array([1, 2, 3], dtype = np.int64)	
	 		  
#array维度 2
array.dim
#array大小 (2, 3)
arrat.shape
#array元素数量 6
array.size

1.2 numpy的创建array

#3行4列全0元素
a = np.zeros((3, 4))

#全1元素
np.ones((3, 4))

#从a到b步长为c的数列 [a, b)
np.arange(a, b, c)

#生成一个三行四列的[0, 12)数列
a = np.arange(12).reshape((3, 4))

#生成从1到10.共五个数字(自动匹配步长)
a = np.linspace(1, 10, 5)

#arange(初始值,结束值,间隔) 生成的序列不包含结束值
#linspace(初始值, 结束值, 值的个数) 生成的序列包含结束值。

对于numpy中数组维度的问题:

该数组尺寸为(2,4,3),剥去最外层的中括号,得到的就是维度为0的两个尺寸为(4,3)的单位体,同理对第一个单位体再剥去一层中括号,得到的就是相应单位体中维度为1,尺寸为(3)的三个单位体(也可以看这篇文章

1.3 numpy的基础运算

numpy中矩阵普通的预算都是对矩阵a和矩阵b中的元素逐个运算的

a = np.array([1, 2, 3])
b = np.array([2, 3, 4])

#对矩阵a和b进行逐个元素相加(加减乘除类似)
c = a+b #[3, 5, 7]

#对矩阵b的每个元素取平方
c = b**2

#对矩阵a和矩阵b进行矩阵相乘(要满足矩阵乘法要求)
c_dot = np.dot(a, b)
c_dot_2 = a.dot(b)

#对a不同维度元素取和(这里的取和即逐个元素加和)
c = np.sum(a, axis=0) #0维度逐个加和

1.4 numpy的索引

#如果想表示矩阵中特定的一个元素要写具体
A = np.arange(1, 13).reshape((3, 4))
#A[2]表示的是[9 10 11 12],即整个第二行
#A[2][0]或者A[2, 0]表示的是9

#另外,:可以表示所有元素
#A[2, :]表示[9 10 11 12]即第二行所有元素
#A[2, 1:3]表示[10 11],也是遵循[a,b)

对于二维矩阵A,A.T表示A的转置

for i in A:
	print(i)
#结果是输出A的每一行,由此可知,i是表示的A[i]

#如果想要输出A中的每个元素呢?要用到flat或者flatten,如:
for i in A.flat:
	print(i)
print(A.flatten('C'))
#注意这里的flat可以换成flatten,但是说法print(A.flatten)是错误的

flat和flatten的区别:
.flat作数组元素迭代器,可以用for访问数组每一个元素,A.flat返回的并不是一个列表或矩阵

.fatten(‘order’)则返回的是一份数组拷贝并改为一维的格式,且对拷贝所做的修改不会影响原始数组
其中参数order:‘C’:C-style,行序优先;‘F’:Fortran-style,列序优先;‘K’:按照元素在内存出现的顺序进行排序;

1.5 numpy的array合并

对于一个二维矩阵的合并来说,有分别从竖直方向和水平方向合并的两种方法:

A = np.array([1, 1, 1])
B = np.array([2, 2, 2])

C = np.vstack((A, B)) #vertical 在竖直方向上堆叠
D = np.hstack((A, B)) #horizontal 在水平方向上平铺
#两种合并都可以对多个矩阵进行合并,如(A, A, B, B)

对于非二维矩阵的合并呢?
首先看一下对于一个array怎么增加维度:

np.newaxis #用来给array增加维度 A的shape为(3,)
C = A[:, np.newaxis] #C的shape就变成了(3, 1)
D = A[np.newaxis, :] #D的shape就变成了(1, 3)
#所以可以得出一个结论,对于newaxis的使用,[:, np.newaxis, :]后得到的shape为(a, 1, b)
#其中a和b为原来张量的shape,newaxis表示在对应位置加一维且尺寸为1

然后先对array增加一维,合并:

#将A和B变为二维再去合并
A = np.array([1, 1, 1])[:, newaxis] #也可以这样写
B = np.array([2, 2, 2])[:, newaxis]

C = np.concatenate((A, B), axis=0)
D = np.concatenate((A, B), axis=1)

1.6 numpy的array拆分

A = np.arange(12).reshape((3, 4))

print(A)
#(array, 分成的份数, 对第几维分割)
print(np.split(A, 3, axis=0))
print(np.split(A, 4, axis=1))

输出结果为:

注意: 直接np.split的时候,array所分割的维度对应的尺寸可以被分成的份数整除,不然会报错

对于无法整除的情况呢?

print(np.array_split(A, 3, axis=1))

结果为:

很明显,原数组被分成了(2,1,1)的形式(没有等分)

1.7 numpy的copy & deep copy

在python中,浅拷贝相当于c中的指针指向同一个位置,引用的同一个数据,而深拷贝才是真正的拷贝

A = np.array([1, 2, 3])
B = A
C = A.copy()
A[0] = 2
print(B) #[2 2 3]
print(C) #[1 2 3]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
代码下载:完整代码,可直接运行 ;运行版本:2022a或2019b或2014a;若运行有问题,可私信博主; **仿真咨询 1 各类智能优化算法改进及应用** 生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化 **2 机器学习和深度学习方面** 卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断 **3 图像处理方面** 图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知 **4 路径规划方面** 旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化 **5 无人机应用方面** 无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配 **6 无线传感器定位及布局方面** 传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化 **7 信号处理方面** 信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化 **8 电力系统方面** 微电网优化、无功优化、配电网重构、储能配置 **9 元胞自动机方面** 交通流 人群疏散 病毒扩散 晶体生长 **10 雷达方面** 卡尔曼滤波跟踪、航迹关联、航迹融合

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值