2011-08-13 18 views
6

के मानों को कैसे छोटा करें, मेरे पास एक द्वि-आयामी numpy array (uint16) है, मैं उस बाधा के लिए एक निश्चित बाधा (255 कहें) के ऊपर सभी मानों को कैसे छोटा कर सकता हूं? अन्य मूल्यों को वही रहना चाहिए। एक नेस्टेड पाश का उपयोग करना असुरक्षित और बेकार लगता है। बाद (:2 डी numpy array

उत्तर

5
import numpy as np 
my_array = np.array([[100, 200], [300, 400]],np.uint16) 
my_array[my_array > 255] = 255 

व्यवहृत किया जा सकेगा

array([[100, 200], 
     [255, 255]], dtype=uint16) 
+0

वर्क्स एक बम की तरह! धन्यवाद – nobody

6

यदि आपका प्रश्न JBernardo के जवाब के रूप में बिट गहराई के रूप में संबंधित नहीं था, अधिक सामान्य तरीके से करना यह की तरह कुछ होगा संपादित करें, मेरा उत्तर अब बहुत ज्यादा एक ही उसके रूप में है)

 
def trunc_to(my_array, limit): 
    too_high = my_array > limit 
    my_array[too_high] = limit 

Here 'सा numpy bool अनुक्रमण के लिए अच्छा परिचय लिंक।

19

वास्तव में वहाँ 'क्लिप' इस के लिए एक विशिष्ट विधि है,:

import numpy as np 
my_array = np.array([[100, 200], [300, 400]],np.uint16) 
my_array.clip(0,255) # clip(min, max) 

उत्पादन:

array([[100, 200], 
     [255, 255]], dtype=uint16) 
संबंधित मुद्दे