Ich habe zwei Arrays

array1 = [[ 37.06853867  30.22016525  24.13002205  23.74543762  28.23823929
   29.85162544]
 [ 36.39044189  27.74254036  20.38976479  21.59453011  30.35881233
   34.24060822]
 [ 34.39845657  26.73529243  22.30514145  27.13420486  38.91122437
   48.05885315]
 [ 38.22272491  40.40032578  43.52813721  47.13837051  54.32110977
   64.78022003]
 [ 47.3240242   57.3037529   62.097332    62.22722626  62.09951782
   64.59619141]
 [ 29.9451561   37.32279587  41.77493668  45.76233673  49.91016388
   53.55546951]]


array2 = [[255 255 255 255 255 255]
 [255 255   1 1 255 255]
 [255 255 255 1 255 255]
 [255 255 255 255 255 255]
 [255 255 255 255 255 255]
 [255 255 255 255 255 255]]

Ich möchte sie zusammenfassen. Ich möchte jedoch nur Werte von Array2 zu Array1 hinzufügen, wenn der Wert nicht 255 ist. Wie kann ich das tun?

2
ustroetz 26 Nov. 2013 im 04:28

3 Antworten

Beste Antwort

Hier ist eine Möglichkeit, dies zu tun, ohne den Wert von Array1 und Array2 zu ändern:

mask = (array2 != 255)
result = array1.copy()
result[mask] += array2[mask]
print(result)
3
unutbu 26 Nov. 2013 im 11:31

In numpy

#convert to numpy if necessary 
array2 = np.array(array2)
array1 = np.array(array1)

#then it is easy
array2[array2 == 255] = 0
array1 += array2
1
Hammer 26 Nov. 2013 im 00:30

Wenn Sie numpy nicht verwenden, können Sie dies mit zip in einem ziemlich großen Komprimierungsaufruf für verschachtelte Listen ziemlich schnell tun.

[[c1 if c2 == 255 else c1 + c2 for c1, c2 in zip(row1, row2)] 
      for row1, row2 in zip(array1, array2)]
1
Pyrce 26 Nov. 2013 im 00:40