Python数组定义及操作

第1关:赋值定义较复杂数据结构

任务描述

本关任务:对比Python的基本数据类型(列表、元组、字典等),数组具有更灵活的数据存储方式,比如一维数组和二维数组或者矩阵,特别是对于数值型数据来说更有优势,根据给出的列表L1=1,2,3,4,0.1,7和嵌套列表L2= \[1,2,3,4,(5,6,7,8)],请利用numpy包中的array()函数将其定义为一维数组和二维数据。

相关知识

为了完成本关任务,你需要掌握:1.如何获取数组的长度,2.如何遍历数组。

利用array()函数创建数组

基于array()函数,可以将列表、元组、嵌套列表、嵌套元组等给定的数据结构转化为数组。值得注意的是,利用array函数之前,要导入Numpy。示例代码如下:

#1.先预定义列表d1,元组d2,嵌套列表d3、d4和嵌套元组d5

d1=1,2,3,4,0.1,7 #列表

d2=(1,2,3,4,2.3) #元组

d3=\[1,2,3,4,5,6,7,8] #嵌套列表,元素为列表

d4=(1,2,3,4),(5,6,7,8) #嵌套列表,元素为元组

d5=((1,2,3,4),(5,6,7,8)) #嵌套元组

#2.导入Numpy,并调用其中的array函数,创建数组

import numpy as np

d11=np.array(d1)

d21=np.array(d2)

d31=np.array(d3)

d41=np.array(d4)

d51=np.array(d5)

#3. 删除d1、d2、d3、d4、d5变量

del d1,d2,d3,d4,d5

输出:

--

开始你的任务吧,祝你成功!

python 复制代码
#将列表L1定义为一维数组
#将嵌套列表L2定义为二维数组
#在函数中定义以上数组,并返回计算结果l1,l2
import numpy as np
L1=[1,2,3,4,0.1,7]
L2=[[1,2,3,4],(5,6,7,8)]
#********** Begin **********#
def return_values():
    l1 = np.array(L1)
    l2 = np.array(L2)



    return(l1,l2)
#********** End **********#

第2关:内嵌函数定义较复杂数据结构

任务描述

本关任务:在编程过程中,预先定义一些数组变量用来保存程序产生的结果是非常必要的,请给出利用numpy包中ones ()、zeros()、arange()函数定义的例子。

相关知识

为了完成本关任务,你需要掌握:1.如何内置函数创建数组。

内置函数创建数组

利用内置函数,可以创建一些特殊的数组。例如,可以利用ones(n,m)函数创建n行m列元素全为1的数组,利用zeros(n,m)函数创建n行m列元素全为0的数组,利用arange(a,b,c)创建以a为初始值,b−1为末值,c为步长的一维数组。其中a和c参数可省,这时a取默认值为0,c取默认值为1。

示例代码如下:

z1=np.ones((3,3)) #创建3行3列元素全为1的数组

z2=np.zeros((3,4)) #创建3行4列元素全为0的数组

z3=np.arange(10) #创建默认初始值为0,默认步长为1,末值为9的一维数组

z4= np.arange(2,10) #创建默认初始值为2,默认步长为1,末值为9的一维数组

z5= np.arange(2,10,2) #创建默认初始值为2,步长为2,末值为9的一维数组

输出:

编程要求

根据提示,在右侧编辑器补充代码,完成所给出的任务。

开始你的任务吧,祝你成功!

python 复制代码
#按要求完成以下任务:
#① 3行3列元素全为1的数组
#② 3行3列元素全为0的数组
#③ 初始值为2、末值为9、步长为2的数组
#④ 默认初始值0,步长为1的,末值为9的一维数组
#⑤ 返回计算结果A,B,C,D
#********** Begin **********#
import numpy as np
def return_values():
    A=np.ones((3,3))
    B=np.zeros((3,3))
    C=np.arange(2,10,2)
    D=np.arange(0,10)

    
    return(A,B,C,D)

#********** End **********#

第3关:数组运算

任务描述

本关任务:现有数组A=np.array(1,3,3.1,4.5)和B= np.array( \[1,2,3,4,(5,6,7,8),9,10,11,12]),请求解出A的最大值、最小值、正弦值、余弦值、长度和A乘B的程序。

相关知识

为了完成本关任务,你需要掌握:1.如何进行数组的加减乘除等运算。

数组运算

数组的运算主要包括数组之间的加、减、乘、除运算,数组的乘方运算,以及数组的数学函数运算。

示例代码如下:

import numpy as np

A=np.array(\[1,2,3,4]) #定义二维数组A

B=np.array(\[5,6,7,8]) #定义二维数组B

C1=A-B #A、B两个数组元素之间相减,结果赋给变量C1

C2=A+B #A、B两个数组元素之间相加,结果赋给变量C2

C3=A*B #A、B两个数组元素之间相乘,结果赋给变量C3

C4=A/B #A、B两个数组元素之间相除,结果赋给变量C4

C5=A/3 #A数组所有元素除以3,结果赋给变量C5

C6=1/A #1除以A数组所有元素,结果赋给变量C6

C7=A**2 #A数组所有元素取平方,结果赋给变量C7

C8=np.array(1,2,3,3.1,4.5,6,7,8,9) #定义数组C8

C9=(C8-min(C8))/(max(C8)-min(C8)) #对C8中的元素做极差化处理,结果赋给变量C9

D=np.array(\[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]) #定义数组D

#数学运算

E1=np.sqrt(D) #对数组D中所有元素取平方根,结果赋给变量E1

E2=np.abs(1,-2,-100) #取绝对值

E3=np.cos(1,2,3) #取cos值

E4=np.sin(D) #取sin值

E5=np.exp(D) #取指数函数值

输出:

开始你的任务吧,祝你成功!

python 复制代码
#现给出数组A和B,按顺序完成以下任务:
#① 求解A的最大值、最小值、余弦值、正弦值、长度
#② 求A乘B
#③ 返回计算结果Max_A,Min_A,cos_A,sin_A,le_A,result

#********** Begin **********#

#导入numpy包
import numpy as np
def return_values():
    A=np.array([[1,3,3.1,4.5]])
    B=np.array([[1,2,3,4],(5,6,7,8),[9,10,11,12]])
    Max_A=np.max(A)
    Min_A=np.min(A)
    cos_A=np.cos(A)
    sin_A=np.sin(A)
    le_A=len(A)
    result=A*B
    return(Max_A,Min_A,cos_A,sin_A,le_A,result)



#********** End **********#

第4关:数组切片

任务描述

本关任务:现有数组A=np.array(\[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]),编程实现如下功能:1)将6、7、14、16这四个元素顺序切片出来构成一个2*2数组;2)以第0列元素大于5构造逻辑索引记为I,以I为索引切片数组A的第1、3列元素获得新的数组,记为B。

相关知识

为了完成本关任务,你需要掌握:1.如何获取数组的切片。

常见的数组切片方法

一般地,假设D为待访问或切片的数据变量,则访问或者切片的数据=D①,②。其中①为对D的行下标控制,②为对D的列下标控制,行和列下标控制通过整数列表来实现。但是需要注意①整数列表中的元素不能超出D中的最大行数,而②不能超过D中的最大列数。为了更灵活地操作数据,取所有的行或者列,可以用":"来实现。同时,行控制还可以通过逻辑列表来实现。

示例代码如下:

import numpy as np

D=np.array(\[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]) #定义数组D

#访问D中行为1,列为2的数据,注意下标是从0开始的

D12=D1,2

#访问D中第1、3列数据

D1=D:,\[1,3]

#访问D中第1、3行数据

D2=D\[1,3,:]

#取D中满足第0列大于5的所有列数据,本质上行控制为逻辑列表

Dt1=DD\[:,0>5,:]

#取D中满足第0列大于5的2、3列数据,本质上行控制为逻辑列表

#Dt2=DD\[:,0>5,2,3]

TF=True,False,False,True

#取D中第0、3行的所有列数据,本质上行控制为逻辑列表,取逻辑值为真的行

Dt3=DTF,:

#取D中第0、3行的2、3列数据

#Dt4=DTF,\[2,3]

#取D中大于4的所有元素

D5=DD\>4

输出:

利用ix_()函数进行数组切片

数组的切片也可以通过ix_()函数构造行、列下标索引器实现。

示例代码如下:

import numpy as np

D=np.array(\[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]) #定义数组D

#提取D中行数为1、2,列数为1、3的所有元素

D3=Dnp.ix_(\[1,2,1,3)]

#提取D中行数为0、1,列数为1、3的所有元素

D4=Dnp.ix_(np.arange(2),\[1,3)]

#提取以D中第1列小于11得到的逻辑数组作为行索引,列数为1、2的所有元素

D6=Dnp.ix_(D\[:,1<11,1,2)]

#提取以D中第1列小于11得到的逻辑数组作为行索引,列数为2的所有元素

D7=Dnp.ix_(D\[:,1<11,2)]

#提取以第2.5.1节中的TF=True,False,False,True逻辑列表为行索引,列数为2的所有元素

TF=True,False,False,True

D8=Dnp.ix_(TF,\[2)]

#提取以第2.5.1节中的TF=True,False,False,True逻辑列表为行索引,列数为1、3的所有元素

D9=Dnp.ix_(TF,\[1,3)]

输出:

开始你的任务吧,祝你成功!

python 复制代码
#********** Begin **********#
#1.导入numpy包
import numpy as np
def return_values():
    #2.给出的定义数组A
    A=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])

    #3.对数组A切片取出6,7,14,16
    D1 = A[2][1]
    D2 = A[2][3]
    D3 = A[3][1]
    D4 = A[3][3]
    #4.用切出的数构造成一个2*2的数组
    arr = np.array([[D1, D2], [D3, D4]])
    #1.构造逻辑索引(筛选第0列大于5的元素)
    I=arr[arr[:, 0] > 5, :]
    #2.逻辑索引I对数组1,3列切片,并返回计算结果B
    B=I
    return(B)
#********** End **********#

第5关:数组连接

任务描述

本关任务:现有数组A=np.array(\[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])和B= np.array(1,1,1,1),请将数组A和数组B进行水平连接获得新数组C,即C的前4列来源于A,最后一列来源于B。

相关知识

为了完成本关任务,你需要掌握:1.如何获取数组的连接。

数组连接

在数据处理中,多个数据源的集成整合是经常发生的。数组间的集成与整合主要体现在数组间的连接,包括水平连接和垂直连接两种方式。水平连接函数用hstack()实现,垂直连接函数用vstack()实现。注意输入参数为两个待连接数组组成的元组。

示例代码如下:

import numpy as np

A=np.array(\[1,2,3,4]) #定义二维数组A

B=np.array(\[5,6,7,8]) #定义二维数组B

C_s=np.hstack((A,B)) #水平连接要求行数相同

C_v=np.vstack((A,B)) #垂直连接要求列数相同

输出:

开始你的任务吧,祝你成功!

python 复制代码
#注意:数组A和B水平连接要求列数相同,因此B要转换成矩阵
#********** Begin **********#
import numpy as np
#1.导入numpy包
def return_values():
    #2.定义数组A和数组B
    A=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
    B=np.array([1,1,1,1])
    #3.水平连接数组A和数组B,获得数组C,并返回计算结果C
    C=np.hstack((A, B.reshape(-1, 1)))
    return(C)
#********** End **********#
相关推荐
溪语流沙1 小时前
【Python项目实战】部署上线:把博客发布到云服务器
服务器·开发语言·python
智码看视界1 小时前
神经网络基础——从感知机到多层网络的数学原理
python·深度学习·神经网络·感知机·激活函数·前向传播·权重初始化
oceanstonetree1 小时前
zgy地震数据体的显示
python·zgy
“AI国潮设计-小江”2 小时前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁美食猫IP & 创意甜品设计(附ComfyUI工作流与商用授权思路)
开发语言·人工智能·python·prompt·aigc
L@ncor2 小时前
第一章 初识智能体 · 学习笔记
人工智能·python
宁渡AI大模型2 小时前
河南宁渡科技有限公司|宁渡课堂 AI 全栈面试分享,大模型 API 开发与流式输出面试题
人工智能·python·ai·大模型
Java后端的Ai之路2 小时前
Git冲突完整排查与实战:本地修改覆盖报错到成功推送全流程复盘
开发语言·人工智能·git·python·pop
javartisan2 小时前
AI Agent 中 Tool / Skill 的调用链路设计
python
钱栈up2 小时前
大屏Logo定位调了8次才合格:响应式定位的经验总结安装Unsloth桌面端报PyTorch失败:Python 3.13的ABI不兼容所致
python