使用 Python numpy where 条件更改低于某个值的整体
Using Python numpy where condition to change entires below a certain value
这是我的数组:
import numpy as np
a = np.array([0, 5.0, 0, 5.0, 5.0])
是否有可能以某种方式使用 numpy.where
将值 x
添加到 a
中小于 l
的所有整数?
所以像这样:
a = a[np.where(a < 5).add(2.5)]
应该return:
array([2.5, 5.0, 2.5, 5.0, 5.0])
您可以使用 np.where
创建 additions 的数组,然后简单地添加到 a
-
a + np.where(a < l, 2.5,0)
样本运行-
In [16]: a = np.array([1, 5, 4, 5, 5])
In [17]: l = 5
In [18]: a + np.where(a < l, 2.5,0)
Out[18]: array([ 3.5, 5. , 6.5, 5. , 5. ])
a += np.where(a < 1, 2.5, 0)
where
将 return 满足条件(第一个参数)的第二个参数,否则第三个参数。
a = np.array([0., 5., 0., 5., 5.])
a[np.where(a < 5)] += 2.5
如果您真的想使用 where
或只是
a[a < 5] += 2.5
我经常用它来进行这类操作。
您可以使用 "masked array" 作为索引。布尔运算,比如a < 1
return这样的数组。
>>> a<1
array([False, False, False, False, False], dtype=bool)
您可以将其用作
>>> a[a<1] += 1
a<1
部分只选择a
中符合条件的项目。才可以对这部分进行操作。
如果您想保留您的选择,可以分两步进行。
>>> mask = a>1
>>> a[mask] += 1
另外,您可以统计符合条件的项目:
>>> print np.sum(mask)
鉴于您可能需要更改 dtype(从 int
到 float
),您需要创建一个新数组。没有显式 .astype
或 np.where
调用的简单方法是与掩码相乘:
>>> b = a + (a < 5) * 2.5
>>> b
array([ 2.5, 5. , 2.5, 5. , 5. ])
with np.where
这可以更改为一个简单的表达式(使用 else
-条件,第三个参数,在 where
中):
>>> a = np.where(a < 5, a + 2.5, a)
>>> a
array([ 2.5, 5. , 2.5, 5. , 5. ])
这是我的数组:
import numpy as np
a = np.array([0, 5.0, 0, 5.0, 5.0])
是否有可能以某种方式使用 numpy.where
将值 x
添加到 a
中小于 l
的所有整数?
所以像这样:
a = a[np.where(a < 5).add(2.5)]
应该return:
array([2.5, 5.0, 2.5, 5.0, 5.0])
您可以使用 np.where
创建 additions 的数组,然后简单地添加到 a
-
a + np.where(a < l, 2.5,0)
样本运行-
In [16]: a = np.array([1, 5, 4, 5, 5])
In [17]: l = 5
In [18]: a + np.where(a < l, 2.5,0)
Out[18]: array([ 3.5, 5. , 6.5, 5. , 5. ])
a += np.where(a < 1, 2.5, 0)
where
将 return 满足条件(第一个参数)的第二个参数,否则第三个参数。
a = np.array([0., 5., 0., 5., 5.])
a[np.where(a < 5)] += 2.5
如果您真的想使用 where
或只是
a[a < 5] += 2.5
我经常用它来进行这类操作。
您可以使用 "masked array" 作为索引。布尔运算,比如a < 1
return这样的数组。
>>> a<1
array([False, False, False, False, False], dtype=bool)
您可以将其用作
>>> a[a<1] += 1
a<1
部分只选择a
中符合条件的项目。才可以对这部分进行操作。
如果您想保留您的选择,可以分两步进行。
>>> mask = a>1
>>> a[mask] += 1
另外,您可以统计符合条件的项目:
>>> print np.sum(mask)
鉴于您可能需要更改 dtype(从 int
到 float
),您需要创建一个新数组。没有显式 .astype
或 np.where
调用的简单方法是与掩码相乘:
>>> b = a + (a < 5) * 2.5
>>> b
array([ 2.5, 5. , 2.5, 5. , 5. ])
with np.where
这可以更改为一个简单的表达式(使用 else
-条件,第三个参数,在 where
中):
>>> a = np.where(a < 5, a + 2.5, a)
>>> a
array([ 2.5, 5. , 2.5, 5. , 5. ])