Voici un tableau numpy en 3 dimensions :

import numpy as np
m = np.array([
  [ 
    [1,2,3,2], [4,5,6,3]
  ],
  [
    [7,8,9,4], [1,2,3,5]
  ]
])

Pour chaque tuple, je dois multiplier les trois premières valeurs par la dernière (divisée par 10 et arrondie), puis ne garder que les 3 résultats. Par exemple dans [1,2,3,2] :

  • Le 1 devient : round(1 * 2 / 10) = 0
  • Le 2 devient : round(2 * 2 / 10) = 0
  • Le 3 devient : round(3 * 2 / 10) = 1

Ainsi, [1,2,3,2] devient : [0,0,1].

Et le résultat complet sera :

[
  [ 
    [0,0,1], [1,2,2]
  ],
  [
    [3,3,4], [1,1,2]
  ]
]

J'ai essayé de séparer la dernière valeur de chaque tuple dans une variable alpha et les 3 premières valeurs dans une variable rgb.

alpha = m[:, :, 3] / 10
rgb = m[:, :, :3]

Mais après ça, je suis débutant en Python et je ne sais vraiment pas comment traiter ces tableaux.

Un peu d'aide d'un Python-guy expérimenté sera la bienvenue.

1
Paleo 30 janv. 2020 à 19:31

1 réponse

Meilleure réponse

Essaye ça

n = np.rint(m[:,:,:3] *  m[:,:,[-1]] / 10).astype(int)

Out[192]:
array([[[0, 0, 1],
        [1, 2, 2]],

       [[3, 3, 4],
        [0, 1, 2]]])
3
Andy L. 30 janv. 2020 à 16:58