2011-10-21 37 views
14

NumPy có toán tử bậc ba không? Ví dụ: trong R, có chức năng if-else được vector hóa:Toán tử Ternary cho NumPy ndarray?

> ifelse(1:10 < 3,"a","b") 
[1] "a" "a" "b" "b" "b" "b" "b" "b" "b" "b" 

Có điều gì tương đương trong NumPy không?

Trả lời

19

Bạn đang tìm kiếm numpy.where():

>>> print numpy.where(numpy.arange(10) < 3, 'a', 'b') 
['a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b'] 

NumPy thậm chí còn có một sự tổng quát (mà bản đồ 0, 1, 2, vv để các giá trị, thay vì lập bản đồ chỉ True và False): numpy.choose().

+0

Đó là nó. Cảm ơn bạn. Chọn có vẻ phức tạp nhưng tôi sẽ tìm cách sử dụng nó ở đâu đó. – hatmatrix

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