2013-07-21 39 views
15

Nếu tôi có một mảng x, và thực hiện một np.repeat(x,2), tôi đang nhân bản mảng đó.Làm thế nào để loại bỏ mọi phần tử khác của một mảng trong python? (Nghịch đảo của np.repeat()?)

>>> x = np.array([1,2,3,4])  
>>> np.repeat(x, 2) 
array([1, 1, 2, 2, 3, 3, 4, 4]) 

Làm cách nào để tôi kết thúc với mảng gốc?

Nó cũng sẽ làm việc với một mảng y ngẫu nhiên:

>>> y = np.array([1,7,9,2,2,8,5,3,4]) 

Làm thế nào tôi có thể xóa tất cả các yếu tố khác để tôi kết thúc với những điều sau đây?

array([7, 2, 8, 3]) 

Trả lời

33

y[1::2] sẽ thực hiện công việc. Ở đây phần tử thứ hai được chọn bằng cách lập chỉ mục với 1, và sau đó được lấy tại một khoảng thời gian là 2.

+0

nếu bạn muốn y chứa thông tin này, nó phải là y = y [1 :: 2] – rafee

0

Tôi gặp sự cố với điều gì nếu bạn yêu cầu đầu vào của một mảng bởi người dùng?

Vì vậy, thực hiện một chức năng đã giúp rất nhiều:

def remove_every_other(my_list): 
    return my_list[::2] 
    pass 

này đã giúp tôi tìm ra rằng nếu bất kỳ người dùng đã nhập vào một mảng, chúng ta có thể xử lý nó bằng cách gọi chức năng này.

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