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

时间:2017-06-08 11:33:40

标签: python numpy

有两个数组:

{

"task_id2": {
                "apikey2": "1235",
                "flow": "mobileweb",
                "total_chocolate_request": 43235,
                "start_time": "2017 - 05 - 09 12: 29: 00 UTC",
                "end_time": "2017 - 05 - 09 12: 29: 00 UTC"
            }

如何从源数组(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

2 个答案:

答案 0 :(得分:5)

您可以简单地获取shape b之类的内容:

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,...阵列。

答案 1 :(得分:4)

获取要分配的数组的形状,然后slice目标数组并指定 -

m,n = b.shape
a[:m,:n] = b