Python多维数组构建与初始化
一、引言
Python编程语言的流行就不再赘述,其用户早已经不再拘泥于程序员群体,而是作为一种基础工具被越来越广泛的人群在使用。数组操作是Python编程最常见一种操作,下面对一维和多维数组的构建与初始化进行详细描述。
二、常规的数组构建方法
定义一个空数组:
arr = []
然后就可以通过for循环对数组进行初始化,如初始化元素值为0~9的数组:
定义一个带有初始值的数组:
arr1 = ["how", "are", "you"] #包含3个字符串元素
arr2 = [12, 23, 34, 45, 56] #包含5个整形元素
arr3 = [1.414, 2.225, 3.142] #包含3个浮点型元素
arr4 = [["姓名", "唐三"], ["性别", "男"], ["武器", "海神三叉戟"]] #包含3个元素的二维数组,其每个元素又是个一维数组
二维数组访问:
arr4[0][0], arr4[0][1], arr4[1][0], arr4[1][1], arr4[2][0], arr4[2][1]分别指向这六个信息。
arr5 = [ [["姓名", "戴沐白"], ["性别", "男"]],
[["姓名", "唐三"], ["性别", "男"]],
[["姓名", "奥斯卡"], ["性别", "男"]],
[["姓名", "马红俊"], ["性别", "男"]],
[["姓名", "小舞"], ["性别", "女"]],
[["姓名", "朱竹清"], ["性别", "女"]],
[["姓名", "宁荣荣"], ["性别", "女"]] ] #包含7个元素的三维数组,其每个元素又是个二维数组
三维数组访问:
- arr5[0][0][2] 为"戴沐白"
- arr5[4][0][2] 为"小舞"
- arr5[4][1][2] 为"女" #小舞一栏的
三、基于numpy的数组构建方法
先导入numpy:
import numpy as np
3.1 构建0填充的数组
a1 = np.zeros(5) #构建5个初始值为0.0的数组,默认是float型
a2 = np.zeros([2,3]) #构建一个2行3列的二维数组
a3 = np.zeros([2,3,4]) #构建一个2层3行4列的三维数组
3.2 构建1填充的数组
b1 = np.ones(5) #构建5个初始值为1.0的数组,默认是float型
b2 = np.ones([2,3]) #构建一个2行3列的二维数组
b3 = np.ones([2,3,4]) #构建一个2层3行4列的三维数组
3.3 构建指定数据填充的数组
c1 = np.full((5), 6) #构建5个初始值为6的数组,数据类型为指定的类型int
c2 = np.full((5), 3.14) #构建5个初始值为3.14的数组,数据类型为指定的类型float
c3 = np.full((5), "ucr") #构建5个初始值为"ucr"的数组,数据类型为指定的str
c4 = np.full((2,3), 1.75) #构建一个2行3列的二维数组
c5 = np.full((2,3,4), 3.14) #构建一个2层3行4列的三维数组
还可以通过np.empty构建数组,跟np.ones类似,只不过empty数组的元素值是无意义的数值,感觉用处不大。
四、基于for循环的数组构建方法
d1 = [0]*5 #构建5个初始值为0的数组
d2 = ["abc"]*5 #构建5个初始值为"abc"的数组
d3 = [1.2 for col in range(5)] #构建5个初始值为1.2的数组
d4 = ["love" for col in range(5)] #构建5个初始值为"love"的数组
d5 = [[0 for col in range(4)] for row in range(3)] #构建一个4列3行的二维数组
d6 = [[[0 for col in range(4)] for row in range(3)] for depth in range(2)] #构建一个4列3行2层的三维数组,0填充
最特别的,构建多维空数组,以便在每个元素中存储特定值,如点坐标:
p1 = [10.1, 0.2, 5.5] #定义point1
p2 = [10.2, 0.3, 6.6] #定义point2
d7 = [[[ [] for col in range(4)] for row in range(3)] for depth in range(2)] #构建一个4列3行2层的三维数组,空数组填充
d7[0][1][2].append(p1) #在指定位置存储坐标1
d7[0][1][3].append(p2) #在指定位置存储坐标2