Skip to main content
Overview

NumPy che confonde

September 1, 2021
1 min read

dtype=object, when complex list

Quando si converte una lista in NumPy che mescola dati str e numerici, il dtype si blocca su object. In questo caso, neanche l’index slicing cambia il dtype, e chiamare astype genera un errore.

a = {somthing compelx Nd list}
b = np.array(a)
only_numerical = b[ {some slicing selecting only numerical data} ]
only_numerical.astype(np.float16) -> error!!

Usare np.stack ha risolto tutto al volo..

np.stack(only_numercial)

np.mean

Mi serviva np.mean durante l’implementazione del soft voting.

>>> pred.shape
(10, 12800, 3)

10 è il numero di augmentation, 12800 il numero di dati, 3 il numero di classi. Volevo la media delle predizioni delle classi tra i risultati delle augmentation. Dato che volevo la media lungo l’ultimo asse, inizialmente ho fatto così:

np.mean(pred, axis=-1)

Ma pensandoci, axis=0 era quello giusto. I punti chiave:

  • L’asse dato a np.mean scompare. Ad esempio, axis=2 fa scomparire il 2o asse.
  • Ragionare in termini di righe e colonne non funziona in N-d, quindi basta pensare che si calcola sui dati nella posizione dell’asse-esimo.
    • Ad esempio, per [[1,1,1],[2,2,2]], calcolare la media con axis=1 significa fare la media di 1, 1, 1.

Considerando questi punti, dovrebbe essere axis=0, non axis=-1. Perché bisogna fare la media sulle augmentation.

>>> pred.shape
(10, 12800, 3)
>>> np.mean(pred, axis=0).shape
(12800, 3)
Loading comments...