J'ai 20 valeurs de pixels pour une image, et je voudrais les stocker dans un vecteur de caractéristiques 20D, pas un vecteur de caractéristiques de 20 longueurs. Je suis nouveau sur Python, donc je ne sais pas si en Python un tableau régulier est considéré comme un vecteur n-dimensionnel, ou si j'ai besoin de vectoriser un seul tableau d'une manière ou d'une autre. Voici la valeur des pixels:

[245, 247, 199, 199, 210, 213, 216, 196, 225, 
    199, 189, 189, 195, 221, 225, 201, 221, 201, 216, 222]

Je souhaite les transformer en un vecteur dimensionnel 20d, comment procéder pour cela?

0
John Jones 1 juin 2020 à 00:53

3 réponses

Meilleure réponse

Si je vous comprends bien, la forme de votre tableau de solutions devrait être (20,1). Pour ce faire, np.reshape est le moyen le plus rapide et le plus simple. Le code pour faire cela ci-dessous:

np.reshape(your_array,(20,1))
1
Victor Sim 31 mai 2020 à 22:20

Il y a plusieurs moyens de le faire. Vous pouvez le faire en le conservant sous forme de liste:

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

[[i] for i in l]

Ou:

list(map(lambda x: [x], l))

Production:

Out[21]: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]

Ou utilisez l'une des nombreuses méthodes pour ajouter une dimension à un tableau numpy:

import numpy as np

arr = np.array(l)

Tous ces éléments sont équivalents:

arr[Ellipsis, None]
np.expand_dims(arr, -1)
np.reshape(-1, 1)

Production:

array([[ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10]])
1
Nicolas Gervais 31 mai 2020 à 22:16

Vous pouvez traiter chaque valeur, puis la convertir en vecteur à n dimensions pour obtenir un tableau vectorisé 20-D.

def convertN(arr):
    #create n-dimensional arr
    #Return n-dimensional arr

input =[245,247,199...216,222]

for i,v in enumerate(input):
    input[i] = convertN(v)

print(input)
2
Damnik Jain 31 mai 2020 à 22:19