1

我需要从矩阵(例如 named )创建一个新(n*m) x 4矩阵(例如named ),但出于速度原因我不想使用嵌套循环。在这里我将如何使用嵌套循环:bn x ma

for j in xrange(1,m+1):
    for i in xrange(1,n+1):
        index = (j-1)*n+i
        b[index,1] = a[i,j]
        b[index,2] = index
        b[index,3] = s1*i+s2*j+s3
        b[index,4] = s4*i+s5*j+s6

因此,问题是如何创建一个新矩阵,其值源自原始矩阵索引?谢谢

4

2 回答 2

3

如果你可以使用 numpy,你可以试试

import numpy as np
# Create an empty array
b = np.empty((np.multiply(*a.shape), 4), dtype=a.dtype)
# Get two (nxm) of indices
(irows, icols) = np.indices(a)
# Fill the b array
b[...,0] = a.flat
b[...,1] = np.arange(a.size)
b[...,2] = (s1*irows + s2*icols + s3).flat
b[...,3] = (s4*irows + s5*icols + s6).flat
于 2012-08-14T10:23:35.837 回答
0

对于那些有类似问题的人,一些小的更正(不能作为评论发布:/):

import numpy as np
# Create an empty array
b = np.empty((a.size, 4), dtype=a.dtype)
# Get two (nxm) of indices (starting from 1)
(irows, icols) = np.indices(a.shape) + 1
# Fill the b array
b[...,0] = a.flat
b[...,1] = np.arange(a.size) + 1 
b[...,2] = (s1*irows + s2*icols + s3).flat
b[...,3] = (s4*irows + s5*icols + s6).flat
于 2012-08-16T08:30:07.420 回答