2015-03-09 17 views
5

Tôi có một mảng như thế nàyLàm cách nào để thay thế một cột bằng một giá trị trong một mảng có nhiều mảng?

import numpy as np 

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

Tôi muốn thay thế cột đầu tiên bởi giá trị 1. Tôi đã làm như sau:

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

Ngược lại, khi tôi thay thế các hàng hoạt động!

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

Tôi có một mảng lớn, vì vậy tôi không thể thay thế giá trị theo giá trị.

+0

Tôi không đọc kỹ. Tôi chỉ cần nhìn vào nó. – Jika

Trả lời

10

Bạn có thể thay thế các cột đầu tiên như sau:

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

Đây a[:, 0] có nghĩa là "chọn tất cả các hàng từ cột 0". Giá trị 1 được phát trên cột được chọn này, tạo ra mảng mong muốn (không cần thiết phải sử dụng danh sách [1, 1], mặc dù bạn có thể).

Cú pháp của bạn a[:][0] có nghĩa là "chọn tất cả các hàng từ mảng a và sau đó chọn hàng đầu tiên". Tương tự, a[0][:] có nghĩa là "chọn hàng đầu tiên là a và sau đó chọn lại toàn bộ hàng này". Đây là lý do tại sao bạn có thể thay thế các hàng thành công, nhưng không phải là cột - đó là cần thiết để thực hiện một lựa chọn cho trục 1, không chỉ là trục 0.

2

Bạn cần phải xác định số cột như sau:

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

Đọc thêm về numpy indexing.

2

Bạn có thể làm một cái gì đó như thế này:

import numpy as np 

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

Vui lòng tham khảo đến Accessing np matrix columns

Các vấn đề liên quan