2014-04-22 7 views
5

Po utworzeniu h5py dataset, jak dodać lub usunąć określone wiersze lub kolumny z tablicy NxM?Dodawanie lub usuwanie określonych wierszy lub kolumn w zestawie danych h5py

Moje pytanie jest podobne do this one, ale nie chcę ślepo skracać ani rozszerzać tablicy. Podczas usuwania muszę mieć możliwość określenia dokładnego wiersza lub kolumny do usunięcia.

Podczas dodawania wiem, że muszę określić maxshape=(None, None) podczas tworzenia początkowego zestawu danych, ale metoda resize nie pozwala ci określić, które wiersze lub kolumny zostaną obcięte, jeśli zmniejszysz rozmiar.

Odpowiedz

5

h5py nie jest przeznaczony do tego celu. Pandas może być lepszą biblioteką do wykorzystania, ponieważ opiera się na koncepcji tabel.

powiedziawszy, oto jak to zrobić:

In [1]: f = h5py.File('test.h5') 

In [2]: arr = rand(4,4) 

In [3]: dset = f.create_dataset('foo',data=arr,maxshape=(2000,2000)) 

In [4]: dset[:] 
Out[4]: 
array([[ 0.29732874, 0.59310285, 0.61116263, 0.79950116], 
     [ 0.4194363 , 0.4691813 , 0.95648712, 0.56120731], 
     [ 0.76868585, 0.07556214, 0.39854704, 0.73415885], 
     [ 0.0919063 , 0.0420656 , 0.35082375, 0.62565894]]) 

In [5]: dset[1:-1,:] = dset[2:,:] 

In [6]: dset.resize((3,4)) 

In [7]: dset[:] 
Out[7]: 
array([[ 0.29732874, 0.59310285, 0.61116263, 0.79950116], 
     [ 0.76868585, 0.07556214, 0.39854704, 0.73415885], 
     [ 0.0919063 , 0.0420656 , 0.35082375, 0.62565894]]) 

Usuwa kolumnę 1 z dset. Czyni to, przypisując odpowiednio kolumny 2 i 3 do 1 i 2, przed zmniejszeniem zbioru danych o jedną kolumnę. Zamień indeksy dolne, aby usunąć wiersz 1. Możesz z łatwością napisać na nim opakowanie, jeśli masz zamiar robić to dużo.

Powiązane problemy