当前位置:  开发笔记 > 编程语言 > 正文

如何在python中定义多维数组?

如何解决《如何在python中定义多维数组?》经验,为你挑选了2个好方法。

在MATLAB中,有一种简单的方法来定义多维数组,例如

A(:,:,1) = [1,2,3; 4,5,6];
A(:,:,2) = [7,8,9; 10,11,12];

>> A

 A(:,:,1) =

 1     2     3
 4     5     6


 A(:,:,2) =

 7     8     9
 10    11    12

其中前两个索引分别为存储在A中的第i个矩阵(或页面,见下图)的行和列;

在此输入图像描述

有谁知道如何在python中定义相同的结构?



1> Sandipan Dey..:

与NumPy索引类似于MATLAB

 import numpy as np
 A=np.empty((2,3,3))
 A.shape
 #(2L, 3L, 3L)
 A[0,1,2] # element at index 0,1,2
 #0.0
 A[0,:,:] # 3x3 slice at index 0
 #array([[ 0.,  0.,  0.],
 #       [ 0.,  0.,  0.],
 #       [ 0.,  0.,  0.]])
 A[1,1,:] # 1-D array of length 3
 #array([ 0.,  0.,  0.]


也许您还应该显示`import`语句,因为您使用`np`并且它使您的答案"更加坚固".+1.
另请注意,在MATLAB中,通常会对"A(x,y,z)`进行索引,而python在进行数学运算时遵循"A [z,y,x]`

2> Willem Van O..:

一个纯Python的方式来做到这一点是使用列表的列表(或在这种情况下列表的列表的列表).您可以使用列表解析来初始化它.例如:

w = 4 #width
h = 3 #height
d = 3 #depth

data = [[[0]*h for _ in range(w)] for _ in range(d)]

或者如果你想用图中的元组填充张量:

data = [[[(i+1,j+1,k+1) for k in range(h)] for j in range(w)] for i in range(d)]

这初始化了一个用零填充的dx wx h"矩阵".

然后,您可以使用以下命令访问(i,j,k)-th元素:

data[i][j][k]

然而,像numpy这样的库可以支持向量,矩阵,张量等.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有