python - 如何从源数组分配目标数组的子集?

标签 python numpy

有两个数组,如:

a = np.zeros((3, 4), dtype=int)
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

b = np.ones((2, 3), dtype=int)
[[1 1 1]
 [1 1 1]]

如何从源数组 (b) 分配给目标数组 (a) 中存在于源中的条目?

结果数组应该是:

[[1 1 1 0]
 [1 1 1 0]
 [0 0 0 0]]

最佳答案

您可以简单地获取 bshape,例如:

m,n = b.shape

然后使用切片设置a中的元素:

a[:m,:n] = b

这会产生:

>>> m,n = b.shape
>>> a[:m,:n] = b
>>> a
array([[1, 1, 1, 0],
       [1, 1, 1, 0],
       [0, 0, 0, 0]])

如果 ab 具有相同任意维数,我们可以使用以下生成器:

a[tuple(slice(mi) for mi in b.shape)] = b

再次导致:

>>> a[tuple(slice(mi) for mi in b.shape)] = b
>>> a
array([[1, 1, 1, 0],
       [1, 1, 1, 0],
       [0, 0, 0, 0]])

但这也适用于 3d、4d ……数组。

关于python - 如何从源数组分配目标数组的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44434570/

相关文章:

python - Celery-Django 作为守护进程 : Settings not found

python - Pandas DataFrame Apply 函数,多个参数

python - 如何在 Centos 6.8 上安装 OpenCV 3?

Python 矩阵内积

python - 将 numpy float 组转换为整数,替换 NaN 值

python - 如何根据给定值计算空间距离矩阵

python - 为什么Python系统包会尝试导入本地模块?

python - 如何在按键时更改pygame中文本的颜色?

python - dtype ('float64' 的值太大)

python - Matplotlib:如何绘制列表中的数据,添加两个 y 轴?