2013-09-20 35 views
15

Tôi mới đến numpy và tôi đang thực hiện phân cụm với rừng ngẫu nhiên trong python. Câu hỏi của tôi là:Numpy Array Nhận chỉ số hàng đang tìm kiếm theo một hàng

Làm cách nào tôi có thể tìm thấy chỉ mục của hàng chính xác trong một mảng? Ví dụ

[[ 0. 5. 2.] 
[ 0. 0. 3.] 
[ 0. 0. 0.]] 

và tôi tìm kiếm [0. 0. 3.] và nhận được kết quả 1 (chỉ số của dòng thứ hai).

Bất kỳ đề xuất nào? Theo dõi mã (không hoạt động ...)

for index, element in enumerate(leaf_node.x): 
     for index_second_element, element_two in enumerate(leaf_node.x): 
      if (index <= index_second_element): 
       index_row = np.where(X == element) 
       index_column = np.where(X == element_two) 
       self.similarity_matrix[index_row][index_column] += 1 
+1

Bạn nên cung cấp Short, Self Contained, Correct (Compilable), Example http://www.sscce.org/. Chưa kể rằng 'không làm việc' không phải là một mô tả của vấn đề. – zero323

Trả lời

39

Tại sao không đơn giản làm điều gì đó như thế này?

>>> a 
array([[ 0., 5., 2.], 
     [ 0., 0., 3.], 
     [ 0., 0., 0.]]) 
>>> b 
array([ 0., 0., 3.]) 

>>> a==b 
array([[ True, False, False], 
     [ True, True, True], 
     [ True, True, False]], dtype=bool) 

>>> np.all(a==b,axis=1) 
array([False, True, False], dtype=bool) 

>>> np.where(np.all(a==b,axis=1)) 
(array([1]),) 
+0

Bạn có thể làm điều đó với ký tự đại diện không - giả sử chữ "0" đầu tiên sẽ được phép là "bất kỳ giá trị" nào? –

+1

Nếu tôi hiểu bạn thử đúng: 'a [:, 1:] == np.array ([0, 3])' thay vì 'a == b'. Vì vậy, những gì chúng tôi làm chỉ là cắt bỏ cột đầu tiên và so sánh như được hiển thị. – Daniel

+0

Ok - vì vậy các ký tự đại diện không nằm trong câu hỏi. Làm rõ tuyệt vời. Cám ơn –

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