如何根据Python中的一个值更改整个数组的值

时间:2016-06-17 10:30:12

标签: python arrays numpy

我们说我有这个阵列:

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

如果列中的一个或多个值小于零,我试图更改一列的值。代码应该是通用的,而不仅仅是这个数组 如何将中间向量中的所有值设置为-3?

1 个答案:

答案 0 :(得分: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]])