我想用张量流中的数组元素创建一个矩阵
假设我想创建一个(2, 2*N)
大小的矩阵(以张量流表示),其中N是我拥有的某些数组的大小,例如
a=[1,2,3,..N],
b=2*[1,2,3,..N],
c=3*[1,2,3,..N],
d=4*[1,2,3,..N]
我想创建一个矩阵M
,以便M=[[a,b],[c,d]]
通过for循环在矩阵中插入数组。
在张量流中可能吗?
我尝试将其明确写为M=[[a,b],[c,d]]
这样就可以了,但我想在for循环中执行此操作,然后尝试一次插入每个数组。
那么可以在循环内使用类似的东西吗?
M[0,0]=a
M[0,1]=b
M[1,0]=c
M[1,1]=d
谢谢
答案 0 :(得分:0)
您可以在输入数组上使用zip
并使用不同的交错范围:
data = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
print([[a, b] for a, b in zip(data[::2], data[1::2])])
>>> [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
如果您想使其更加通用,那么也可以创建具有zip理解的zip输入,并将zip迭代的输出传递给列表构造函数:
data = [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]
n = 3
print([list(z) for z in zip(*[data[i::n] for i in range(n)])])
>>> [[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]]