2015-03-09 20 views
5

mi hanno una serie come questaCome sostituire una colonna con un valore in una matrice numpy?

import numpy as np 

a = np.zeros((2,2), dtype=np.int) 

Voglio sostituire la prima colonna per il valore 1. Ho fatto quanto segue:

a[:][0] = [1, 1] # not working 
a[:][0] = [[1], [1]] # not working 

Al contrario, quando ho sostituito le righe ha funzionato!

a[0][:] = [1, 1] # working 

Ho un grande array, quindi non posso sostituire valore per valore.

+0

Non l'ho letto attento. Ho appena dato un'occhiata a questo. – Jika

risposta

10

è possibile sostituire la prima colonna come segue:

>>> a = np.zeros((2,2), dtype=np.int) 
>>> a[:, 0] = 1 
>>> a 
array([[1, 0], 
     [1, 0]]) 

Qui a[:, 0] significa "selezionare tutte le righe dalla colonna 0". Il valore 1 viene trasmesso attraverso questa colonna selezionata, producendo l'array desiderato (non è necessario utilizzare un elenco [1, 1], sebbene sia possibile).

La sintassi a[:][0] significa "selezionare tutte le righe dall'array a e quindi selezionare la prima riga". Allo stesso modo, a[0][:] significa "seleziona la prima riga di a e seleziona nuovamente l'intera riga". Questo è il motivo per cui si potrebbe sostituire le righe con successo, ma non le colonne - è necessario effettuare una selezione per l'asse 1, non solo asse 0.

2

è necessario specificare il numero di colonne come segue:

>>> a[::,0]=1 
>>> a 
array([[1, 0], 
     [1, 0]]) 

Leggi di più riguardo numpy indexing.

2

si può fare qualcosa di simile:

import numpy as np 

a = np.zeros((2,2), dtype=np.int) 
a[:,0] = np.ones((1,2), dtype=np.int) 

prega di fare riferimento a Accessing np matrix columns

Problemi correlati