Ho un array A che è della forma (M, N) ora vorrei eseguire l'operazioneMultipying e aggiungendo all'interno di una troppo grande array
R = (A[:,newaxis,:] * A[newaxis,:,:]).sum(2)
che dovrebbe produrre una (MxM) array. Ora il problema è che la matrice è abbastanza grande e ottengo un errore di memoria, perché l'array MxMxN non si adatta alla memoria.
quale sarebbe la migliore strategia per ottenere questo risultato? C? carta geografica()? o c'è ancora una funzione speciale per questo?
ringraziamento, David
'A' è davvero un array MxN? Immagino che 'A [:, newaxis,:]' sia un array MxN. Anche allora, 'A [:, newaxis ,:] * A [newaxis,:,:]' dovrebbe produrre una matrice bidimensionale, quindi non capisco 'sum (2)', perché non esiste un terzo asse (o newaxis è una sezione, non un singolo numero). Manca qualcosa qui. – Evert
In base alla precisione richiesta, è possibile tentare di utilizzare un tipo diverso per i valori all'interno dell'array. Ad esempio, 'numpy.float32' o' numpy.int16'. Questo potrebbe dimezzare i tuoi requisiti di memoria. – Evert
@Evert A [:, np.newaxis,:]. Shape == (M, 1, N) e (A [:, np.newaxis ,:] * A [np.newaxis,:,:]). Forma == (M, M, N) – JoshAdel