Premier problème :
Je cherche à créer de manière rapide un tableau à plusieurs dimensions
(par exemple une matrice).
A priori rempli de zéros mais c'est juste histoire de le créer avant de
commencer à le remplir, mais si c'est possible d'avoir des cellules
vides c'est encore mieux !
Pour l'instant je fais :
a = [0 for i in xrange(15)]
for i in xrange(15):
a[i] = [0 for j in xrange(30)]
Mais c'est loin d'être rapide avec 4 ou 5 dimensions et pleins de
cellules...
Une solution serait d'utiliser Numeric/numarray avec sa fonction zeros
aussi rapide que la lumière, mais si quelqu'un avait d'autres
propositions aussi efficaces, cela m'évitera une dépendance non
nécessaire...
Deuxième problème :
Est-il possible de créer un tableau Python directement à partir de code
C en interface ?
L'idéal étant que la fonction puisse renvoyer un objet 'tableau python'.
Je suppose qu'il faut bidouiller avec l'API mais je ne vois pas trop
comment.
L'idée étant de créer en C une fonction foo qui renvoie un tableau :
A = foo(2,3)
print A
A = [[0,0,0],[0,0,0]]
Pour l'instant j'utilise Pyrex et je fais une bête recopie d'un tableau
C vers un tableau Python, mais je suppose que je pourrais directement
manipuler en C le tableau Python ?
On Fri, 24 Jun 2005 22:22:40 +0200, "Do Re Mi chel La Si Do"
Oui-da ; la sieste n'a pas été une réussite...
Merci à tous pour ces réponses ! Je vais garder a = [[0] * 30 for i in xrange(15)] pour le code non optimisé et a = zeros(15,30) quand je dispose de numarray.
Au fait un détail rigolo : dans les dernières version de Numeric/numarray on peut créer un tableau avec des objets Python avec Numeric mais pas avec numarray ! c'est dommage comme régression...
On Fri, 24 Jun 2005 22:22:40 +0200, "Do Re Mi chel La Si Do"
Oui-da ; la sieste n'a pas été une réussite...
Merci à tous pour ces réponses !
Je vais garder a = [[0] * 30 for i in xrange(15)] pour le code non
optimisé et a = zeros(15,30) quand je dispose de numarray.
Au fait un détail rigolo : dans les dernières version de
Numeric/numarray on peut créer un tableau avec des objets Python avec
Numeric mais pas avec numarray ! c'est dommage comme régression...
On Fri, 24 Jun 2005 22:22:40 +0200, "Do Re Mi chel La Si Do"
Oui-da ; la sieste n'a pas été une réussite...
Merci à tous pour ces réponses ! Je vais garder a = [[0] * 30 for i in xrange(15)] pour le code non optimisé et a = zeros(15,30) quand je dispose de numarray.
Au fait un détail rigolo : dans les dernières version de Numeric/numarray on peut créer un tableau avec des objets Python avec Numeric mais pas avec numarray ! c'est dommage comme régression...
Do Re Mi chel La Si Do
Bonsoir !
ça marche ! Super ! Je vais pouvoir abandonner les somnifères. Merci.
Michel Claveau
Bonsoir !
ça marche ! Super ! Je vais pouvoir abandonner les somnifères.
Merci.
Le Sat, 25 Jun 2005 00:37:14 +0200, Do Re Mi chel La Si Do a écrit :
Bonsoir !
ça marche ! Super ! Je vais pouvoir abandonner les somnifères. Merci.
J'ai fait une importante amélioration :
import sys,signal
def sieste(): sys.stdout.write("z")
def findesieste(sig,stack): sys.exit("nHein? roooo putain déjà ! Bordel!nn")
signal.signal(signal.SIGINT,findesieste) while 1: sieste()
Michel Claveau
Régis
-- Beuvez beuvez, mais bourré jamais
Laurent Pointal
Bernard wrote:
Bonjour,
Premier problème : Je cherche à créer de manière rapide un tableau à plusieurs dimensions (par exemple une matrice).
A priori rempli de zéros mais c'est juste histoire de le créer avant de commencer à le remplir, mais si c'est possible d'avoir des cellules vides c'est encore mieux !
Pour l'instant je fais : a = [0 for i in xrange(15)] for i in xrange(15): a[i] = [0 for j in xrange(30)]
Mais c'est loin d'être rapide avec 4 ou 5 dimensions et pleins de cellules...
Déjà:
ligne = [0]*15 ligne [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Ensuite, tu peux utiliser soit le module copy, soit la notation [:] qui retourne une copie.
a = [] for i in xrange(15) : a.append(ligne[:]) ...
Si tu as plus de dimensions, zieute deepcopy dans le module copy, ça devrais être assez rapide tout en restant en Python pur.
A+
Laurent.
Bernard wrote:
Bonjour,
Premier problème :
Je cherche à créer de manière rapide un tableau à plusieurs dimensions
(par exemple une matrice).
A priori rempli de zéros mais c'est juste histoire de le créer avant de
commencer à le remplir, mais si c'est possible d'avoir des cellules
vides c'est encore mieux !
Pour l'instant je fais :
a = [0 for i in xrange(15)]
for i in xrange(15):
a[i] = [0 for j in xrange(30)]
Mais c'est loin d'être rapide avec 4 ou 5 dimensions et pleins de
cellules...
Déjà:
ligne = [0]*15
ligne
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Ensuite, tu peux utiliser soit le module copy, soit la notation [:] qui
retourne une copie.
a = []
for i in xrange(15) : a.append(ligne[:])
...
Premier problème : Je cherche à créer de manière rapide un tableau à plusieurs dimensions (par exemple une matrice).
A priori rempli de zéros mais c'est juste histoire de le créer avant de commencer à le remplir, mais si c'est possible d'avoir des cellules vides c'est encore mieux !
Pour l'instant je fais : a = [0 for i in xrange(15)] for i in xrange(15): a[i] = [0 for j in xrange(30)]
Mais c'est loin d'être rapide avec 4 ou 5 dimensions et pleins de cellules...
Déjà:
ligne = [0]*15 ligne [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Ensuite, tu peux utiliser soit le module copy, soit la notation [:] qui retourne une copie.
a = [] for i in xrange(15) : a.append(ligne[:]) ...
Si tu as plus de dimensions, zieute deepcopy dans le module copy, ça devrais être assez rapide tout en restant en Python pur.
A+
Laurent.
Eric Deveaud
Do Re Mi chel La Si Do wrote:
Oui, effectivement. Fallait y penser...
Et, autant continuer : a=[[0]*30]*15
tu stockes 15 fois la même référence.
essayes encore ;-)
Eric
--
- Bientot==> Une rubrique membre avec photos - Bientot==> "Un chat on line" pour discuter Si j'amène la photo de mon membre, je pourai caresser le chat ?
-+- FF in Guide du Neuneu Usenet - Cha chanonchait bien pourtant -+-
Do Re Mi chel La Si Do wrote:
Oui, effectivement. Fallait y penser...
Et, autant continuer : a=[[0]*30]*15
tu stockes 15 fois la même référence.
essayes encore ;-)
Eric
--
- Bientot==> Une rubrique membre avec photos
- Bientot==> "Un chat on line" pour discuter
Si j'amène la photo de mon membre, je pourai caresser le chat ?
-+- FF in Guide du Neuneu Usenet - Cha chanonchait bien pourtant -+-
- Bientot==> Une rubrique membre avec photos - Bientot==> "Un chat on line" pour discuter Si j'amène la photo de mon membre, je pourai caresser le chat ?
-+- FF in Guide du Neuneu Usenet - Cha chanonchait bien pourtant -+-