2015-03-09 31 views
5

Mam tablicę jak tenJak zamienić jedną kolumnę na wartość w tablicy numpy?

import numpy as np 

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

chcę zastąpić pierwszą kolumnę o wartości 1. Zrobiłem co następuje:

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

W przeciwnym razie, gdy wymieniam wiersze, zadziałało!

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

Mam dużą tablicę, więc nie mogę zastąpić wartości przez wartość.

+0

Nie przeczytałem tego uważnie. Po prostu na to spojrzałam. – Jika

Odpowiedz

10

można wymienić pierwszą kolumnę następująco:

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

Tutaj a[:, 0] oznacza „zaznacz wszystkie wiersze z kolumny 0”. Wartość 1 jest nadawana w tej wybranej kolumnie, tworząc pożądaną macierz (nie jest konieczne używanie listy [1, 1], chociaż można).

Twoja składnia a[:][0] oznacza "wybierz wszystkie wiersze z tablicy a, a następnie wybierz pierwszy wiersz". Podobnie, a[0][:] oznacza "wybierz pierwszy wiersz a, a następnie ponownie wybierz cały wiersz". To dlatego można zastąpić wiersze pomyślnie, ale nie kolumny - jest to konieczne, aby dokonać wyboru dla osi 1, a nie tylko oś 0.

2

musisz określić liczbę kolumn w następujący sposób:

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

Więcej o numpy indexing.

2

można zrobić coś takiego:

import numpy as np 

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

Proszę odnieść do Accessing np matrix columns

Powiązane problemy