Som*_*hit 4 python arrays indexing numpy scipy
我试图替换Numpy数组的特定行和列,如下所示.
数组a和b的值最初如下:
a = [[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
b = [[2 3 4 5]
[6 7 8 9]
[0 2 3 4]]
Run Code Online (Sandbox Code Playgroud)
现在,基于一定的概率,我需要执行元素替换a
的值b
(例如,在生成随机数之后,r
对于每个元素,在0和1之间,我将替换元素a
与b
if> 0> ).
我如何使用numpy/scipy在Python中以高性能执行此操作?
随着掩蔽.我们首先生成一个具有相同尺寸的随机数矩阵,并检查它们是否大于0.8
:
mask = np.random.random(a.shape) > 0.8
Run Code Online (Sandbox Code Playgroud)
现在,我们可以分配的值b
这里mask
是True
上对应的指标a
:
a[mask] = b[mask]
Run Code Online (Sandbox Code Playgroud)
例如:
>>> a
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
>>> b
array([[2, 3, 4, 5],
[6, 7, 8, 9],
[0, 2, 3, 4]])
>>> mask = np.random.random(a.shape) > 0.8
>>> mask
array([[ True, False, False, False],
[ True, False, False, False],
[False, False, False, False]])
>>> a[mask] = b[mask]
>>> a
array([[2., 1., 1., 1.],
[6., 1., 1., 1.],
[1., 1., 1., 1.]])
Run Code Online (Sandbox Code Playgroud)
因此,在这些地方mask
就是True
(因为0.8
是相当高的,我们预计平均2.4这样的值),我们分配相应的值b
.
归档时间: |
|
查看次数: |
675 次 |
最近记录: |