如何创建数组Numpy

一、认识Numpy

NumPy,更像是一个魔方(见图),它是Python数组计算、矩阵运算和科学计算的核心库,NumPy这个词来源于Numerical Python 两个单词。NumPy提供了一个商性能的数组对象。让我们轻松创建一维数组、二维数组和多维数组,以及大量的函数和方法,帮助我们轻松地进行数组计算,从而广泛地应用于数据分析、机器学习、图像处理和计算机图形学、数学任务等领域当中。

NumPy的用途是以数组的形式对数据进行操作。机器学习中充斥了大量的数组运算,而NumPy使得这些操作变得简单!由于NumPy是C语言实现的,所以其运算速度非常快。具体功能如下。
1.有一个强大的n维数组对象ndarray。
2.广播功能函数。
3.线性代数、傅立叶变换、随机数生成、图形操作等功能。
4.整合C/C++/Fortran代码的工具。

二、创建数组

学习Numpy前,我们先了解一下数组的相关概念。数组可分为一维数组、二维数组、三维数组,其中三维数组是常见的多维数组。

1.数组的相关概念

1.一维数组

一维数组很简单,基本和Python列表一样,区别于数组切片针对的是原始数组(这意味着,如果对数组进行修改,原始数组也会跟着更改)。

2.二维数组

二维数组本质是以数组作为数组元素的数组。二位数组包括行和列,类似于表格形式,又称为矩阵。

3.三维数组

三维数组是指维数为3的数的结构,也称矩阵列表。三维数组是最常见的多维数组,由于可以用来描述三维空间中的位置或状态而被广泛使用。

2.创建简单的数组

Numpy创建简单的数组主要使用array()函数,语法如下:

numpy.arry(object,dtype=None,copy=True,order='K',subok=Flase,ndmin=0)

参数说明:
object:任何具有数组接口方法的对象。
dtype:数据类型。
copy:布尔型,可选参数,默认值为True,则object 对象被复制:否则,只有当_amray_返回副本,object 参数为嵌套序列,或者需要副本满足数据类型和顺序要求时,才会生成副本。order:元素在内存中的出现顺序,值为K、A、C、F。如果object 参数不是数组,则新创建的数组将按行排列(C),如果值为F,则按列排列;如果object 参数是一个数组,则C(按行)、F(按列)、A(原顺序)、K(元素在内存中的出现顺序)成立。
subok:布尔型。如果值为True,则将传递子类;否则返回的数组将强制为基类数组(默认值)。
ndmin:指定生成数组的最小维数。
演示如何创建数组
创建几个简单的数组,效果如图

程序代码如下:

import numpy as np   #导入Numpy模块
n1=np.array([1,2,3])   #创建一个简单的数组
n2=np.array([0.1,0.2,0.3])  #创建一个包含小数的一维数组
n3=np.array([1,2],[3,4])   #创建一个简单的二维数组

(2.1)为数组指定数据类型

Numpy支持比Python更多种类的数据类型,通过dtype参数可以指定数组的数据类型,程序代码:

import numpy as np
list=[1,2,3]
#创建浮点型数组
n1=np.array(list,dtype=np.float_)

运行程序,输出结果如下:

[1,2,3]
float64
<class'numpy.float64'>

(2.2)数组的复制

当运算和处理数组时,为了不影响到原数组,就需要对原数组进行复制,而对复制后的数组进行修改删除等操作都不会影响到原数组。数组的复制可以通过copy参数实现,程序代码如下:

import numpy as np
n1=np.array([1,2,3])
n2=np.array(n1,copy=True)
n2[0]=3
n2[2]=1
print(n1)
print(n2)

运行程序,输出结果如下:

[1,2,3]
[3,2,1]

(2.3)通过ndmin参数控制最小维数

无论给出的数组的维数是多少,ndmin参数都会根据最小维数创建指定维数的数组。

ndmin=3,虽然给出的数组是一维数组,但是同样会创建一个三维数组,程序代码如下: 

import numpy as np
nd1=[1,2,3]
nd2=np.array(nd1,ndmin=3)
print(nd2)

运行程序,输出结果如下:

[[[1 2 3]]]

(2.4)生成随机数组

(2.4.1)rand()函数

rand()函数用于生成(0,1)之间的随机数组,传入一个值随机生成一维数组,传入一对值则随机生成二维数组,语法如下:

numpy.random.rand(d0,d1,d2,d3,...,dn)

参数d0,d1,...,dn为整数,可以为空。

【示例】随机生成0~1的数组。

随机生成一维数组和二维数组,代码如下:

import numpy as np
n=np.random.rand(5)
print('随机生成0~1的一维数组: ')
print(n)
n1=np.random.rand(2,5)
print('随机生成0~1的二维数组: ')
print(n1)

运行程序,输出结果如下:

(2.4.2)randn()函数

)randn()函数用于从正态分布中返回随机生成的数组,语法如下:

numpy.random.randn(d0,d1,d2,d3,...,dn)

【示例】随机生成满足正态分布的数组,程序代码如下:

import numpy as np
n1=np.random.randn(5)
print('随机生成满足正态的一维数组: ')
print(n1)
n2=np.random.randn(2,5)
print('随机生成满足正态分布二维数组: ')
print(n2)

运行程序,输出结果如下:

(2.4.3)randint()函数

randint()函数于Numpy的arange函数类似。randint()函数用于生成一定范围内的随机数组,左闭右开区间,语法如下:

numpy.random.randint(low,high=None,size=None)

【示例】生成一定范围内的随机函数,程序代码如下:

import numpy as np
n1=np.random.randint(1,3,10)
print('随机生成10个1~3且不包括3的整数: ')
print(n1)
n2=np.random.randint(5,10)
print(n2)
n3=np.random.randint(5,size=(2,5))
print('随机生成5以内二维数组')
print(n3)

运行程序,输出结果如下:

(2.4.4)normal()函数

normal用于生成正态分布的随机数,语法如下:

numpy.random.normal(loc,scale,size)

【示例】生成正态分布的随机函数

import numpy as np
n=np.random.normal(0,0.1,10)
print(n)

运行程序,输出结果如下:

以上总结,我们可以认识到numpy数组,有一维数组,二维数组,三维数组,还有能够掌握的一些常用操作,可以为数组指定数据类型,还有数组的复制,通过ndmin参数控制最小维数,还有学习到生成随机数组,有rand()函数,randn()函数,randint()函数,normal()函数。另外,当数据量非常大时,numpy可以带来百倍以上的提升。

本文文章链接:如何创建数组Numpy-优快云博客

内容概要:本文介绍了一个基于MATLAB实现的无人机三维路径规划项目,采用蚁群算法(ACO)与多层感知机(MLP)相结合的混合模型(ACO-MLP)。该模型通过三维环境离散化建模,利用ACO进行全局路径搜索,并引入MLP对环境特征进行自适应学习与启发因子优化,实现路径的动态调整与多目标优化。项目解决了高维空间建模、动态障碍规避、局部最优陷阱、算法实时性及多目标权衡等关键技术难题,结合并行计算与参数自适应机制,提升了路径规划的智能性、安全性和工程适用性。文中提供了详细的模型架构、核心算法流程及MATLAB代码示例,涵盖空间建模、信息素更新、MLP训练与融合优化等关键步骤。; 适合人群:具备一定MATLAB编程基础,熟悉智能优化算法与神经网络的高校学生、科研人员及从事无人机路径规划相关工作的工程师;适合从事智能无人系统、自动驾驶、机器人导航等领域的研究人员; 使用场景及目标:①应用于复杂三维环境下的无人机路径规划,如城市物流、灾害救援、军事侦察等场景;②实现飞行安全、能耗优化、路径平滑与实时避障等多目标协同优化;③为智能无人系统的自主决策与环境适应能力提供算法支持; 阅读建议:此资源结合理论模型与MATLAB实践,建议读者在理解ACO与MLP基本原理的基础上,结合代码示例进行仿真调试,重点关注ACO-MLP融合机制、多目标优化函数设计及参数自适应策略的实现,以深入掌握混合智能算法在工程中的应用方法。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值