![](/img/trans.png)
[英]How to add (not append) a 2d array to each 2d array of a 3d array?
[英]How to add an array to each row in a 2D array?
我想对两个数组进行元素明智的加法。 第一个是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)]
....
如何实现呢?
如果您的数据非常大,则可能需要研究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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.