2016-11-23 1 views
0

Voici un tableau Numpy je voudrais masque (noter qu'il ne soit pas un tableau 2D strict):numpy masque réseau non en forme de N dimensions

a = array ([array ([0, 1, 2 , 3, 4]), array ([0, 1]), array ([0, 1, 2, 3, 4])], dtype = object)

Cela semble toutefois impossible. Je voudrais comprendre pourquoi, et peut-être comment traiter ce genre d'exemple, où j'obtiens un masque à partir d'une valeur pour l'appliquer à un autre tableau avec la même forme.

Merci beaucoup.

Répondre

0

C'est un tableau de DTYPE objet, contenant 3 éléments (qui se trouvent être des tableaux eux-mêmes):

In [94]: a = np.array([np.array([0, 1, 2, 3, 4]), np.array([0, 1]), np.array([0, 
    ...: 1, 2, 3, 4])], dtype=object) 
In [95]: a 
Out[95]: array([array([0, 1, 2, 3, 4]), array([0, 1]), array([0, 1, 2, 3, 4])], dtype=object) 
In [96]: a.shape 
Out[96]: (3,) 
In [97]: a[1] 
Out[97]: array([0, 1]) 

Que voulez-vous dire par mask?

je peux appliquer un indice booléen à elle:

In [99]: a[np.array([True,False,True])] 
Out[99]: array([array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4])], dtype=object) 

a==np.array([0,1]) produit un avertissement et False; En général == (et autre test de comparaison) ne fonctionne pas bien avec les tableaux de type dtype.

+0

Nous vous remercions de votre réponse. Je pense que mon problème est plus important et je voulais juste créer un tableau à N dimensions avec plusieurs tailles de lignes, ce qui n'est pas l'essence de Numpy. – torhaam

0

Peut-être que ce dont vous avez besoin est d'utiliser des Pandas DataFrames qui peuvent contenir des valeurs manquantes. Dans votre cas, vous pouvez faire quelque chose comme ceci:

>>> import pandas as pd 
>>> df=pd.DataFrame([aa[0].tolist(), aa[1].tolist(), aa[2].tolist()]) 
>>> df.transpose() 
>>> df 

    0 1 2 3 4 
0 0 1 2.0 3.0 4.0 
1 0 1 NaN NaN NaN 
2 0 1 2.0 3.0 4.0 

DataFrames sont très puissants et ils ont des méthodes plus appropriées que les tableaux NumPy quand vous pensez à quelque chose qui ressemble plus à une feuille de calcul que comme une matrice.