如何将数组添加到二维数组中的每一行?

2024-05-09 17:56:44 发布

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

我想对两个数组进行元素相加。第一个是1D,包含在一个字典中的“cras”键下,第二个是2D。示例:

   OrderedDict([('head', array([ 2,  0, 20], dtype=int32)), ('valid', '1  # 
   volume info valid'), ('filename', '../mri/filled-pretess255.mgz'), 
   ('volume', array([256, 256, 256])), ('voxelsize', array([1., 1., 1.])), 
   ('xras', array([-1.,  0.,  0.])), ('yras', array([ 0.,  0., -1.])), 
    ('zras', array([0., 1., 0.])), ('cras', array([-3.433, 18.419, 28.598]))])

    'cras', array([-3.433, 18.419, 28.598])

添加到

[[ -9.022 -81.936  -1.822]
 [ -9.554 -82.001  -1.929]
 [-10.186 -81.872  -1.779]
 ...
 [-16.673  76.043 -18.319]
 [-16.989  76.213 -17.823]
 [-17.568  75.554 -18.709]]

预期结果:

[-3.433+(-9.022), 18.419+(-81.936), 28.598+(-1.822)]
....

如何实施


Tags: info元素示例字典数组filenamearrayhead
2条回答

如果您的数据非常大,您可能需要查看numpy模块。如果没有,您可以使用zip和列表:

matrix = [[ -9.022, -81.936,  -1.822],
          [ -9.554, -82.001,  -1.929],
          [-10.186, -81.872,  -1.779],
          [-16.673,  76.043, -18.319],
          [-16.989,  76.213, -17.823],
          [-17.568,  75.554, -18.709]]

cras   = [-3.433, 18.419, 28.598]

result = [ [ a+b for a,b in zip(cras,line) ] for line in matrix ]

for line in result: print(line)

# (rounded and aligned the printed values for legibility)
[-12.455, -63.517, 26.776]
[-12.987, -63.582, 26.669]
[-13.619, -63.453, 26.819]
[-20.106,  94.462, 10.279]
[-20.422,  94.632, 10.775]
[-21.001,  93.973,  9.889]

您正在尝试添加

cras

如果我理解正确的话,你提供的样本2D列表的每个元素。我所做的是将示例列表转换为numpy数组,然后再次使用numpy执行按元素添加

from collections import OrderedDict
from numpy import array, int32, asarray, add

def adding():
    dict = OrderedDict([('head', array([2, 0, 20], dtype=int32)), ('valid', '1  # \
                 volume info valid'), ('filename', '.. / mri / filled - pretess255.mgz'),
                 ('volume', array([256, 256, 256])), ('voxelsize', array([1., 1., 1.])),
                 ('xras', array([-1., 0., 0.])), ('yras', array([0., 0., -1.])),
                 ('zras', array([0., 1., 0.])), ('cras', array([-3.433, 18.419, 28.598]))])

    'cras', array([-3.433, 18.419, 28.598])

    sample_arr = asarray([[-9.022, -81.936, -1.822],
                 [-9.554, -82.001, -1.929],
                 [-10.186, -81.872, -1.779],
                 [-16.673,  76.043, -18.319],
                 [-16.989, 76.213, -17.823],
                 [-17.568,  75.554, -18.709]])

    result = add(dict['cras'], sample_arr)
    print(result)
    print([-3.433+(-9.022), 18.419+(-81.936), 28.598+(-1.822)])

结果:

[[-12.455 -63.517  26.776]
 [-12.987 -63.582  26.669]
 [-13.619 -63.453  26.819]
 [-20.106  94.462  10.279]
 [-20.422  94.632  10.775]
 [-21.001  93.973   9.889]]

[-12.455, -63.51700000000001, 26.776]

相关问题 更多 >