2024-05-04 12:09:55 发布
网友
在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中定义相同的结构吗?
一种纯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“矩阵”。
d
w
h
然后,您可以使用以下命令访问第(i,j,k)个元素:
(i,j,k)
data[i][j][k]
不过,有些库(如numpy)支持向量、矩阵、张量等
使用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)
一种纯Python的方法是使用列表列表(或者在本例中使用列表列表列表)。你可以用列表理解初始化它。例如:
或者,如果要用图中的元组填充张量:
这将初始化一个由零填充的
d
xw
xh
“矩阵”。然后,您可以使用以下命令访问第
(i,j,k)
个元素:不过,有些库(如numpy)支持向量、矩阵、张量等
使用NumPy索引类似于MATLAB
如果你愿意使用NumPy,那么就有plenty of ways。一种方法是使用所有的零初始化,或者,如您更新的示例中所示,您还可以填充一个范围,然后^{} 。
相关问题 更多 >
编程相关推荐