2012-09-14 36 views
7

mảng của tôi là một ma trận 2D và nó đã numpy.nan giá trị bên cạnh giá trị âm và dương:Làm cách nào để tôi có thể thay đổi các giá trị trong một mảng có khối lượng có tính đến số nan?

>>> array 
array([[  nan,   nan,   nan, ..., -0.04891211, 
      nan,   nan], 
    [  nan,   nan,   nan, ...,   nan, 
      nan,   nan], 
    [  nan,   nan,   nan, ...,   nan, 
      nan,   nan], 
    ..., 
    [-0.02510989, -0.02520096, -0.02669156, ...,   nan, 
      nan,   nan], 
    [-0.02725595, -0.02715945, -0.0286231 , ...,   nan, 
      nan,   nan], 
    [  nan,   nan,   nan, ...,   nan, 
      nan,   nan]], dtype=float32) 

Và tôi muốn thay thế tất cả các số dương tính với một số và tất cả những con số tiêu cực với một số khác.

Tôi có thể thực hiện điều đó bằng cách sử dụng python/numpy như thế nào?

(Đối với hồ sơ, ma trận là kết quả của Geoimage, mà tôi muốn thực hiện một phân loại)

+0

Có số dương vào mảng, chúng không hiển thị trong bản xem trước – user528025

Trả lời

24

Thực tế là bạn có np.nan trong mảng của bạn nên không quan trọng . Chỉ cần sử dụng chỉ mục ưa thích:

x[x>0] = new_value_for_pos 
x[x<0] = new_value_for_neg 

Nếu bạn muốn thay thế của bạn np.nans:

x[np.isnan(x)] = something_not_nan 

Thông tin thêm về lập chỉ mục ưa thích a tutorialNumPy documentation.

+0

Và tôi đã chiến đấu với nó cho một phần tốt hơn trong hai ngày qua ... Nó hoạt động – user528025

+0

@ user528025 nếu bạn có vấn đề, tôi khuyên bạn để đọc một số tài liệu mà tôi đã liên kết. Nó khá hữu ích, và bạn sẽ sớm yêu thích việc thao tác 'ndarrays' như thế nào ... –

+0

Vâng, sau khi tôi nhận ra cách đơn giản là giải pháp tôi bắt đầu tìm kiếm tài liệu để giúp tôi hiểu các công cụ tốt hơn :) – user528025

3

Hãy thử:

a[a>0] = 1 
a[a<0] = -1 
+1

cảm ơn bạn đã trả lời. Mặc dù nó là chính xác, tôi did't chọn nó như câu trả lời của Pierre đã hoàn thành hơn – user528025

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