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

2024-05-04 12:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

在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个矩阵(或页,见下图)的行和列

enter image description here

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


Tags: 方法定义矩阵数组结构行和列matlab
3条回答

一种纯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)个元素:

data[i][j][k]

不过,有些库(如)支持向量、矩阵、张量等

使用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.]

如果你愿意使用NumPy,那么就有plenty of ways。一种方法是使用所有的零初始化,或者,如您更新的示例中所示,您还可以填充一个范围,然后^{}

import numpy as np

a = np.arange(48, dtype=np.int64).reshape((3, 4, 4))
# or 
b = np.zeros((3, 4, 4), dtype=np.int64)

相关问题 更多 >