2016-06-17 24 views
0

基於一個值的值,讓我們說我有此數組:如何改變整個數組在Python

import numpy as np 
np.array([[0,2,7],[-3,4,0],[12,10,12]]) 

我想,如果在一個或多個值來改變一個列的值列小於零。代碼應該是一般的,而不僅僅是這個數組 如何將中間向量中的所有值設置爲-3?

回答

2

您可以使用a mask來過濾某些值爲負數的列。然後可以使用相同的掩碼選擇替換值:在下面的示例中,至少有一個項目爲負數的列將被替換爲值等於該最小值的列。

>>> a = np.array([[0,2,7],[-3,4,0],[12,10,12], [0, -1, 3]]).T 
>>> a 
array([[ 0, -3, 12, 0], 
     [ 2, 4, 10, -1], 
     [ 7, 0, 12, 3]]) 
>>> mask = np.any(a < 0, axis=0) 
>>> a[:,mask] = np.min(a[:,mask], axis=0) 
>>> a 
array([[ 0, -3, 12, -1], 
     [ 2, -3, 10, -1], 
     [ 7, -3, 12, -1]])