2015-02-26 17 views
8

Tôi muốn kết hợp hai mảng numpy để tạo một mảng với các giá trị lớn nhất từ ​​mỗi mảng.Kết hợp hai mảng numpy để tạo thành một mảng có giá trị lớn nhất từ ​​mỗi mảng

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.]]) 

Tôi muốn tạo ra

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

Tôi biết bạn có thể làm

a += b 

mà kết quả trong

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

Đây rõ ràng không phải là những gì tôi là sau khi . Nó có vẻ như một vấn đề dễ dàng như vậy và tôi cho rằng nó có lẽ là nhất.

Trả lời

4

Bạn có thể sử dụng np.maximum để tính toán tối đa yếu tố khôn ngoan của hai mảng:

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

này làm việc với bất kỳ hai mảng, miễn là chúng có cùng hình dạng hoặc có thể là broadcast với hình dạng của hình dạng kia.

Để sửa đổi các mảng a tại chỗ, bạn có thể chuyển hướng đầu ra của np.maximum trở lại a:

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

Cũng np.minimum là tính tối thiểu yếu tố khôn ngoan của hai mảng.

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

này sửa đổi các mảng ban đầu a đó là những gì += đang làm trong ví dụ của bạn mà có thể hoặc không thể là những gì bạn muốn.

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