2015-02-26 11 views
8

से सबसे बड़े मान के साथ एक सरणी बनाने के लिए दो numpy arrays को जोड़कर मैं प्रत्येक सरणी से सबसे बड़े मानों के साथ एक सरणी बनाने के लिए दो numpy arrays को गठबंधन करना चाहता हूं।प्रत्येक सरणी

import numpy as np 

a = np.array([[ 0., 0., 0.5], 
       [ 0.1, 0.5, 0.5], 
       [ 0.1, 0., 0.]]) 

b = np.array([[ 0., 0., 0.0], 
       [ 0.5, 0.1, 0.5], 
       [ 0.5, 0.1, 0.]]) 

मैं

array([[ 0., 0., 0.5], 
     [ 0.5, 0.5, 0.5], 
     [ 0.5, 0.1, 0.]]) 

निर्माण करने के लिए मुझे पता है आप कर सकते हैं चाहते हैं

a += b 

जो

array([[ 0. , 0. , 0.5], 
     [ 0.6, 0.6, 1. ], 
     [ 0.6, 0.1, 0. ]]) 

में परिणाम है यह स्पष्ट रूप से है क्या नहीं मैं के बाद कर रहा हूँ । ऐसा लगता है कि यह एक आसान समस्या है और मुझे लगता है कि यह शायद सबसे अधिक है।

उत्तर

4

आप np.maximum उपयोग कर सकते हैं दो सरणियों के तत्व के लिहाज से अधिकतम गणना करने के लिए:

>>> np.maximum(a, b) 
array([[ 0. , 0. , 0.5], 
     [ 0.5, 0.5, 0.5], 
     [ 0.5, 0.1, 0. ]]) 

यह किसी भी दो सरणियों के साथ काम करता है, जब तक वे एक ही आकार के होते हैं या एक दूसरे के आकार में broadcast हो सकता है।

यथा-स्थान सरणी a संशोधित करने के लिए, आप a करने के लिए np.maximum वापस के उत्पादन अनुप्रेषित कर सकते हैं:

np.maximum(a, b, out=a) 

दो सरणियों के तत्व के लिहाज से कम से कम की गणना के लिए भी np.minimum नहीं है।

3
inds = b > a 
a[inds] = b[inds] 

यह मूल सरणी a जो क्या += अपने उदाहरण में कर रही है जो या नहीं हो सकता है कि आप क्या चाहते है संशोधित करता है।

संबंधित मुद्दे