当前位置:首页 » 编程语言 » python遍历三维数组

python遍历三维数组

发布时间: 2023-01-19 15:42:14

python怎么操作多维数组元素

在Python中,一个像这样的多维表格可以通过“序列的序列”实现。一个表格是行的序列。每一行又是独立单元格的序列。这类似于我们使用的数学记号,在数学里我们用Ai,j,而在Python里我们使用A[i][j],代表矩阵的第i行第j列。

这看起来非常像“元组的列表”(Lists of Tuples)。

“列表的列表”示例

我们可以使用嵌套的列表推导式(list comprehension)创建一个表格。 下面的例子创建了一个“序列的序列”构成的表格,并为表格的每一个单元格赋值。
table= [ [ 0 for i in range(6) ] for j in range(6) ]
print table
for d1 in range(6):
for d2 in range(6):
table[d1][d2]= d1+d2+2
print table
123456

程序的输出结果如下:
[[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, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
[[2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9],
[5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10, 11], [7, 8, 9, 10, 11, 12]]
1234

这个程序做了两件事:创建了一个6 × 6的全0表格。 然后使用两枚骰子的可能组合的数值填充表格。 这并非完成此功能最有效的方式,但我们通过这个简单的例子来演示几项技术。我们仔细看一下程序的前后两部分。

程序的第一部分创建并输出了一个包含6个元素的列表,我们称之为“表格”;表格中的每一个元素都是一个包含6个0元素的列表。它使用列表推导式,对
于范围从0到6的每一个j都创建对象。每一个对象都是一个0元素列表,由i变量从0到6遍历产生。初始化完成之后,打印输出二维全0表格。

推导式可以从里向外阅读,就像一个普通表达式一样。内层列表[ 0 for i in range(6) ]创建了一个包含6个0的简单列表。外层列表[ [...] for j in range(6) ]创建了这些内层列表的6个深拷贝。

程序的第2个部分对2个骰子的每一个组合进行迭代,填充表格的每一个单元格。这由两层嵌套循环实现,每一个循环迭代一个骰子。外层循环枚举第一个骰子的所有可能值d1。内层循环枚举第二个骰子d2。

更新每一个单元格时需要通过table[d1]选择每一行;这是一个包含6个值的列表。这个列表中选定的单元格通过...[d2]进行选择。我们将掷骰子的值赋给这个单元格,d1+d2+2

其他示例

打印出的列表的列表不太容易阅读。下面的循环会以一种更加可读的形式显示表格。
>>>
for row in table:

...
print row

...
[2, 3, 4, 5, 6, 7]
[3, 4, 5, 6, 7, 8]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9, 10]
[6, 7, 8, 9, 10, 11]
[7, 8, 9, 10, 11, 12]
12345678910111213

作为练习,读者可以试着在打印列表内容时,再打印出行和列的表头。提示一下,使用"%2d" % value字符串运算符可以打印出固定长度的数字格式。

显示索引值(Explicit Index Values)

我们接下来对骰子表格进行汇总统计,得出累计频率表。我们使用一个包含13个元素的列表(下标从0到12)表示每一个骰子值的出现频率。观察可知骰子值2在矩阵中只出现了一次,因此我们期望fq[2]的值为1。遍历矩阵中的每一个单元格,得出累计频率表。
fq= 13 * [0]
for i in range(6):
for j in range(6):
c= table[i][j]
fq[ c ] += 1
12345

使用下标i选出表格中的行,用下标j从行中选出一列,得到单元格c。然后用fq统计频率。

这看起来非常的数学和规范。Python提供了另外一种更简单一些的方式。

使用列表迭代器而非下标

表格是列表的列表,可以采用无下标的for循环遍历列表元素。
fq= 13 * [0]
print fq
for row in table:
for c in row:
fq[c] += 1
print fq[2:]

② python 快速 修改三维数组中的数字

1、把列表转成字符串
2、替换逻辑
3、匹配替换
4、转回列表

③ python数组的使用

1、Python的数组分三种类型:
(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。定义方式:arr = [元素]
(2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。定义方式:arr = (元素)
(3) Dictionary 词典类型, 即是Hash数组。定义方式:arr = {元素k:v}
2、下面具体说明这些数组的使用方法和技巧:
(1) list 链表数组
a、定义时初始化
a = [1,2,[1,2,3]]

b、定义时不初始化一维数组:
arr = []
多维数组: arr = [i for i in range(10), 1,[]] #注意, i for in xx 这个必须放在第一个位置,否则要先定义i,
如:
arr = [i for i in range(5), j for j in range(5), []]
这是错误的

这是正确的

c、del 语句和 : 的用法
可以用 start : end 表示数组里的一个区间 ( i >= start and i < end)
del 删除数组里的指定元素
如:

d、遍历数组:

e、增加元素:
一维 arr.append('aaa')
二维 arr[0].append('aaa')
如果要在任意位置插入用 arr.insert(n, 值)
此外还有一种特殊的用法是:
arr += [数组元素]
在不指定下标的情况下,是允许用 += 增加数组元素的。

(2) Tuple 固定数组Tuple 是不可变 list,一旦创建了一个 tuple 就不能以任何方式改变它。
下面拿具体示例说明:

Tuple 没有的方法:
[1] 不能向 tuple 增加元素,没有 append 、 extend 、insert 等方法。
[2] 不能从 tuple 删除元素,没有 remove 或 pop 方法。
[3] 不能在 tuple 中查找元素,没有 index 方法(index是查找而不是索引,索引直接用下标即可,如:t[0])。

使用 tuple 的好处:

Tuple 可以转换成 list, 反之亦然。
转换方式为:

反之:

(2) Dictionary (哈希数组)词典数组
*Dictionary 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明:
*下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。

*可以直接增加一个元素,如果同名,则会改变原来的key的元素的值

*输出所有的key

*输出所有的value

*遍历数组

④ 如何访问三维数组的某一维

与一维和二维数组类似,以整型为例,三维数组的定义,赋值,和遍历操作如下:
1 定义:
int a[10][10][10];
这样就定义了一个10*10*10的三维数组。
2 赋值:
访问三维数组一个元素可以写作a[m][n][p]。于是将三维数组每个值分别输入的代码如下:
int i,j,k;
for(i = 0; i < 10; i ++)
for(j = 0; j < 10; j ++)
for(k = 0; k < 10; k ++)
cin>>a[i][j][k];

3遍历:
事实上,2中所介绍的赋值,实际上已经对数组元素做了一次遍历。
打印的方法如下:

1
2
3
4
5

int i,j,k;
for(i = 0; i < 10; i ++)
for(j = 0; j < 10; j ++)
for(k = 0; k < 10; k ++)
cout<<a[i][j][k];

从以上样例可以看出,三维数组只是比二维数组多了一个维度,遍历的时候需要多一重循环,访问元素的时候也多了一个下标。其它的并没有特别之处。依此类推,四维五维乃至更高维的数组也是类似的。不过更高维度的数组,在实际应用中很少使用。

⑤ python中怎么表示多维数组

只有通过遍历得到。这个应该没有直接获取的方式方法。遍历这个数组,当然维数不确定的话你就需要使用递归,然后一一判断它的值是否为你指定的值,然后输出索引。另外,建议不要匿名提问,因为这会让很多高手不屑于回答你的问题。

⑥ python 3 三维数组或者多维数组 怎么计算元素的百分比,详细里面会具体一点

在Python中,一个像这样的多维表格可以通过“序列的序列”实现。一个表格是行的序列。每一行又是独立单元格的序列。这类似于我们使用的数学记号,在数学里我们用Ai,j,而在Python里我们使用A[i][j],代表矩阵的第i行第j列。

这看起来非常像“元组的列表”(Lists of Tuples)。

“列表的列表”示例

我们可以使用嵌套的列表推导式(list comprehension)创建一个表格。 下面的例子创建了一个“序列的序列”构成的表格,并为表格的每一个单元格赋值。
table= [ [ 0 for i in range(6) ] for j in range(6) ]
print table
for d1 in range(6):
for d2 in range(6):
table[d1][d2]= d1+d2+2
print table
123456

程序的输出结果如下:
[[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, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
[[2, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9],
[5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10, 11], [7, 8, 9, 10, 11, 12]]
1234

这个程序做了两件事:创建了一个6 × 6的全0表格。 然后使用两枚骰子的可能组合的数值填充表格。 这并非完成此功能最有效的方式,但我们通过这个简单的例子来演示几项技术。我们仔细看一下程序的前后两部分。

程序的第一部分创建并输出了一个包含6个元素的列表,我们称之为“表格”;表格中的每一个元素都是一个包含6个0元素的列表。它使用列表推导式,对
于范围从0到6的每一个j都创建对象。每一个对象都是一个0元素列表,由i变量从0到6遍历产生。初始化完成之后,打印输出二维全0表格。

推导式可以从里向外阅读,就像一个普通表达式一样。内层列表[ 0 for i in range(6) ]创建了一个包含6个0的简单列表。外层列表[ [...] for j in range(6) ]创建了这些内层列表的6个深拷贝。

程序的第2个部分对2个骰子的每一个组合进行迭代,填充表格的每一个单元格。这由两层嵌套循环实现,每一个循环迭代一个骰子。外层循环枚举第一个骰子的所有可能值d1。内层循环枚举第二个骰子d2。

更新每一个单元格时需要通过table[d1]选择每一行;这是一个包含6个值的列表。这个列表中选定的单元格通过...[d2]进行选择。我们将掷骰子的值赋给这个单元格,d1+d2+2

其他示例

打印出的列表的列表不太容易阅读。下面的循环会以一种更加可读的形式显示表格。
>>>
for row in table:

...
print row

...
[2, 3, 4, 5, 6, 7]
[3, 4, 5, 6, 7, 8]
[4, 5, 6, 7, 8, 9]
[5, 6, 7, 8, 9, 10]
[6, 7, 8, 9, 10, 11]
[7, 8, 9, 10, 11, 12]
12345678910111213

作为练习,读者可以试着在打印列表内容时,再打印出行和列的表头。提示一下,使用"%2d" % value字符串运算符可以打印出固定长度的数字格式。

显示索引值(Explicit Index Values)

我们接下来对骰子表格进行汇总统计,得出累计频率表。我们使用一个包含13个元素的列表(下标从0到12)表示每一个骰子值的出现频率。观察可知骰子值2在矩阵中只出现了一次,因此我们期望fq[2]的值为1。遍历矩阵中的每一个单元格,得出累计频率表。
fq= 13 * [0]
for i in range(6):
for j in range(6):
c= table[i][j]
fq[ c ] += 1
12345

使用下标i选出表格中的行,用下标j从行中选出一列,得到单元格c。然后用fq统计频率。

这看起来非常的数学和规范。Python提供了另外一种更简单一些的方式。

使用列表迭代器而非下标

表格是列表的列表,可以采用无下标的for循环遍历列表元素。
fq= 13 * [0]
print fq
for row in table:
for c in row:
fq[c] += 1
print fq[2:]

⑦ Python:numpy.array()创建三维以上数组

需求:根据已有的多个列表,利用numpy.array()函数创建三维以上数组

格式概述: 每一维用一个 [] 括起,不同维之间用 , 逗号间隔,最后总体再用 [] 括起!!!

说明 :列表肯定是一维的,多个列表一行一行堆叠形成二维,多个这样的二维构成三维,以此类推可得更高维矩阵(一般3维以上就不用numpy.array()这种方法创建了)。

注意 :高维数组,以三维(5,2,3)为例:前面的5代表页数,即表示(2,3)这样的二维矩阵有5个。即: 前面的数,永远代表比它"低一维"的数组有多少个

(1)创建二维数组的例子:

(2)创建三维数组的例子1:(2,3,3)

(3)创建三维数组的例子2:(4,2,3)

补充:最快验证自己创建的数组是否满足自己的维度需求的方式,就是看打印的结果中, 最外面有几个 ] 中括号,有几个 ] 就是几维数组 !如本文中第3个例子,打印结果最外层有3个 ],说明满足3维的要求。

⑧ 用python怎么读取mat文件的三维矩阵

⑨ Python 3 数组 中遍历为什么得不到 正确的 数据

方法/步骤

  • 1.先确定工具与环境都配置好了,打开pycharm,新建一个test.py,新建一个列表list1=['C','C++','JAVA','C#','PYTHON','JavaScript'],如图所示:

⑩ Python 判断三维数组某行是否全为1

将该数组作为实参传递, 然后在函数中定义一个变量flag作为标记,用循环遍历这个二维数组 如果数组元素为1则将flag置为1继续扫描,否则置为0并退出循环 返回flag

热点内容
删除触发器的sql语句 发布:2025-07-18 05:44:42 浏览:676
安卓手机adv是什么意思 发布:2025-07-18 05:44:02 浏览:840
ims医药数据库 发布:2025-07-18 05:33:52 浏览:814
魅族3脚本精灵 发布:2025-07-18 05:27:39 浏览:807
解压采耳师 发布:2025-07-18 05:23:20 浏览:511
ftp二进制方式 发布:2025-07-18 05:21:04 浏览:751
易观数据库 发布:2025-07-18 05:19:31 浏览:995
linux的c语言编译 发布:2025-07-18 05:16:22 浏览:602
为何编译硬件驱动 发布:2025-07-18 05:15:02 浏览:489
android适配原理 发布:2025-07-18 05:11:59 浏览:551