Ce serait la façon dont vous traduisez le code R
en code Python
.
>>> import numpy as np
>>> a=np.array([[0, 1, 0, 0, 1, 1],
[0, 0, 1, 1, 0, 1],
[1, 1, 1, 1, 0, 0],
[1, 1, 1, 0, 1, 1]])
>>> acov=np.dot(a.T, a)
>>> acov[np.diag_indices_from(acov)]=0
>>> acov
array([[0, 2, 2, 1, 1, 1],
[2, 0, 2, 1, 2, 2],
[2, 2, 0, 2, 1, 2],
[1, 1, 2, 0, 0, 1],
[1, 2, 1, 0, 0, 2],
[1, 2, 2, 1, 2, 0]])
Cependant, vous avez un très grand ensemble de données. Si vous ne voulez pas assembler la matrice de cooccurrence pièce par pièce et que vous stockez vos valeurs dans int64
, avec des nombres 3e + 9, il vous faudra 24 Go de RAM seulement pour contenir les données http://www.wolframalpha.com/input/?i=3e9+ * + 8 + octets. Donc, vous voulez probablement réfléchir et décider quel dtype
vous voulez stocker vos données dans: http://docs.scipy.org/doc/numpy/user/basics.types.html. L'utilisation de int16
rendra probablement le fonctionnement du produit dot
possible sur un PC de bureau décent de nos jours.
Quelle est votre question? – geoffspear
Pourquoi posez-vous à nouveau la même question si vous l'avez déjà posée dans cette autre question? – BrenBarn
@BrenBarn: l'autre question concerne l'implémentation dans R. Cette question concerne l'implémentation en Python. –