有两个数组,如:
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]]
最佳答案
您可以简单地获取 b
的 shape
,例如:
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]])
如果 a
和 b
具有相同但任意维数,我们可以使用以下生成器:
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/