![](/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.