Partage
  • Partager sur Facebook
  • Partager sur Twitter

remplir une matrice

ajouter une colonne vide à une matrice

Anonyme
29 mai 2016 à 18:57:31

bonjour

j'ai une matrice M déja rempli, maintenant je veut ajouter une colonne qui doit etre remplir par des 0, a cette matrice.  

comment je peut faire ça?

  • Partager sur Facebook
  • Partager sur Twitter
29 mai 2016 à 20:17:57

Bonsoir,

tu peux le faire de deux manières, la première est de recrée la matrice avec un 0 en fin de chaque ligne :

M = [line + [0] for line in M]

la deuxième est d'utiliser la fonction append à chaque ligne de la matrice afin de lui ajouter le 0:

for line in M:
    line.append(0)

la deuxième semble plus logique vu ton cas, et elle utilise moins de ressources que la première, mais à toi de décider ;)

voilà j'espère t'avoir aidé ;) Bonne soirée

EDIT: Je me suis amusé rapidement à te faire une fonction pratique :

def col_append(M, number, place):
    return [line[0:place] + [number] + line[place:] for line in M]

La fonction permet d'ajouter une colone de number à l'emplacement place d'une matrice M

-
Edité par WexyR 29 mai 2016 à 20:36:43

  • Partager sur Facebook
  • Partager sur Twitter
Si je suis tête en l'air, c'est par habitude de viser le sommet
Anonyme
30 mai 2016 à 18:14:34

@WexyR merciiiii infiniment :)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 mai 2016 à 18:51:58

@WexyR j'ai utiliser votre fonction mais il y a un erreur: valueerror: operandos could not be broadcast together with shape s(2,)(10,)

  • Partager sur Facebook
  • Partager sur Twitter
30 mai 2016 à 19:01:20

chez moi ça marche très bien pourtant, et je vois pas d'erreur à premiere vue..

tu peux poster exactement ce que tu as testé stp?

Ps: ne me vouvoie pas, je profite de ma jeunesse ;)

  • Partager sur Facebook
  • Partager sur Twitter
Si je suis tête en l'air, c'est par habitude de viser le sommet
Anonyme
30 mai 2016 à 19:25:11

hhhhhh ok ;) 

c'est mon code 

#!/usr/bin/python2.7.6
from __future__ import division
from scipy  import *
import numpy 
import numpy as np
from pylab import *

width= input('donner la largeur du trame: ')
Height = input('donner la hauteur du trame: ')
M=[[]]
M=numpy.zeros(((Height),(width)),dtype='i')
print M
def col_append(M,number,place):
	return[line[0:place]+[number]+line[place:]for line in M]
col_append(M,1,2)
  • Partager sur Facebook
  • Partager sur Twitter
30 mai 2016 à 19:45:34

Oui normal, la fonction est faite pour bosser avec des listes et tu l'as fait avec des tableau numpy; d'ailleurs tu mets M=[[]] puis M=numpy.zeros(((Height),(width)),dtype='i') , faut choisir ^^ enfin faut limiter les changements au moins ;)

pour faire une matrice de 0 avec des listes on peut faire comme ça:

M = [[0 for i in range(width)] for j in range(Height)]

et une fois avec une liste, ma fonction marche très bien:

Width= int(input('donner la largeur du trame: ')) #oublie pas le int(), sinon tu te retrouve avec une chaine de caractères 
Height = int(input('donner la hauteur du trame: '))

M = [[0 for i in range(Width)] for j in range(Height)]

def col_append(M,number,place):
    return [line[0:place] + [number] + line[place:] for line in M]
M = col_append(M,1,2)

print(M)

-
Edité par WexyR 30 mai 2016 à 19:46:50

  • Partager sur Facebook
  • Partager sur Twitter
Si je suis tête en l'air, c'est par habitude de viser le sommet
3 avril 2021 à 9:01:45 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


3 avril 2021 à 9:15:14

@NOUREDDINEPROF Bonjour, merci de ne pas déterrer d'ancien surjet, créer le votre dans le respect des règles du forum, à savoir un minimum de politesse (un message commence par un bonjour ou des salutation à la communauté, et ce termine par des remerciement par avance pour les futures réponses), pour insérer votre code utilisez l'outil d'intégration de code du forum soit le bouton code </>, et une description de votre problématique.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

-
Edité par AbcAbc6 3 avril 2021 à 9:19:09

  • Partager sur Facebook
  • Partager sur Twitter