0
votes

Comment puis-je remplir un tableau avec des ensembles

dire que j'ai une image de 2x2 Â pixels nommés image_array , chaque couleur de pixel est identifiée par une tuple de 3 entrées (RVB), donc la forme de image_array est 2x2x3 .

Je veux créer un np.array c qui a la forme 2x2x1 et qui est le dernier Coordonnée est un ensemble vide.

J'ai essayé ceci: xxx

i get: xxx

Et au lieu de cela, je voudrais le retour: xxx

aucune idée?


5 commentaires

Voulez-vous dire que chaque élément de votre C devrait être un définir ?


Oui c'est ce que je veux dire.


Très bien connexe: Stackoverflow.com/Questtions/240178/...


DTYPE = SET est vraiment identique que dtype = objet . Ainsi, les éléments, y compris les ensembles, sont stockés de la même manière que dans les listes - par référence.


Le point @ CS95 fait est ce que j'ai expliqué dans ma réponse ci-dessous


4 Réponses :


1
votes

Chaque fois que vous faites remplissage (SET ()) code>, cela remplira la matrice avec exactement em> même ensemble, car ils se réfèrent au même ensemble. Pour résoudre ce problème, effectuez simplement un ensemble s'il n'y a pas à chaque fois que vous devez ajouter à l'ensemble

c = np.empty(image_array.shape[:2], dtype=set)
if not c[0][1]:
    c[0,1] = set([124])
else:
    c[0,1].add(124)
print (c)

# [[None {124}]
#  [None None]]


0 commentaires

1
votes

Essayez ceci:

import numpy as np

x = np.empty((2, 2), dtype=np.object)
x[0, 0] = set(1, 2, 3)

print(x)
[[{1, 2, 3} None]
 [None None]]


3 commentaires

Je pense qu'il veut que son éventail ait des ensembles d'entiers pour une raison quelconque, bien que


OK merci, le problème est venu de c [0] [1] . Si je le remplace par c [0,1] Ça fonctionne. Merci


Utilisation de vide lorsque vous avez l'intention de définir un seul élément n'est généralement pas une bonne idée. Mais avec objet DTYPE, vide remplit avec Aucun . Dans le cadre de votre réponse, vous devez afficher le X .



-2
votes

Essayez de changer votre ligne c [0] [1] .Ajouter code> à ceci.

c[0][1] = 124
print(c)


0 commentaires

1
votes

Le tableau d'objets doit être rempli d'objets distincts SET () CODE>. Cela signifie les créer individuellement, comme je le fais avec une compréhension de la liste:

In [283]: image = (((1,2,3), (1,0,0)), ((1,1,1), (2,1,2))) 
     ...: image_array = np.array(image) 
     ...:                                                                                            
In [284]: image_array                                                                                
Out[284]: 
array([[[1, 2, 3],
        [1, 0, 0]],

       [[1, 1, 1],
        [2, 1, 2]]])


0 commentaires