bir çok büyük bir dizinin iç ilave şimdi işlem bir vermelidirçarpımı ve şekli (M, N) ait bir dizi A sahip
R = (A[:,newaxis,:] * A[newaxis,:,:]).sum(2)
yapmak istiyorum (MxM) dizisi. Sorun şu ki, dizi oldukça büyük ve MxMxN dizisi belleğe sığmayacağı için bir Bellek hatası alıyorum.
Bunu yapmak için en iyi strateji ne olurdu? C? harita()? ya da bunun için henüz özel bir işlev var mı?
Sana diziler ne kadar büyük olduğundan emin değilim Davut'a
Gerçekten bir MxN dizisi var mı? Sanırım bir [:, newaxis,:] 'bir MxN dizisidir. O zaman bile, 'A [:, yeni eksen ,:] * A [yeni eksen,:,:] '2 boyutlu bir dizi vermelidir, bu yüzden' toplamı (2) anlamıyorum, çünkü üçüncü bir eksen yoktur (veya newaxis bir dilim değil, tek bir sayıdır). Burada bir şey eksik. – Evert
Gereken hassasiyete bağlı olarak, dizinin içindeki değerler için farklı bir tür kullanmayı deneyebilirsiniz. Örneğin, numpy.float32' veya "numpy.int16". Bu, bellek gereksinimlerinizi yarıya indirebilir. – Evert
@Evert A [:, np.newaxis,:]. Şekil == (M, 1, N) ve (A [:, np.newaxis ,:] * A [np.newaxis,:,:]). == (M, M, N) – JoshAdel