Dieses mit einem Zusatz Ausdruck (ein erreicht werden kann, die eine ganze Griffe 2x2 Block auf einmal).
In [137]: boxes = np.array([
(59, 119, 175, 14),
(147, 107, 66, 11)])
In [138]: res = boxes.copy()
In [139]: res[:,2:] += res[:,:2]
In [140]: res
Out[140]:
array([[ 59, 119, 234, 133],
[147, 107, 213, 118]])
Man könnte es die Kopie überspringen, wenn Sie boxes
selbst modifizieren nichts ausmacht.
Die Summe auch mit einer reshape und Summe werden berechnen kann:
In [142]: boxes.reshape(2,2,2).sum(axis=1)
Out[142]:
array([[234, 133],
[213, 118]])
, die mich zu einer anderen Lösung führt, mit cumsum
:
In [143]: np.cumsum(boxes.reshape(2,2,2),axis=1)
Out[143]:
array([[[ 59, 119],
[234, 133]],
[[147, 107],
[213, 118]]], dtype=int32)
In [144]: np.cumsum(boxes.reshape(2,2,2),axis=1).reshape(2,4)
Out[144]:
array([[ 59, 119, 234, 133],
[147, 107, 213, 118]], dtype=int32)
Scheiben und neu zu gestalten sind zwei praktische Wege der Zusammenarbeit mit Blöcke eines Arrays.
Mein Code aktualisiert Spalten 2 und 3 wie angegeben unabhängig von der Arraygröße, solange mindestens 4 Spalten vorhanden sind. – Goyo
Wenn Sie column_n = column_n + column_ (n-2) für n> 2 bedeuten, können Sie Ihre Frage bearbeiten. – Goyo