当前位置:  开发笔记 > 编程语言 > 正文

NumPy数组索引4D数组

如何解决《NumPy数组索引4D数组》经验,为你挑选了1个好方法。

我有一个4D数组'a'大小(2,3,4,4)填充零.

import numpy as np
a = np.zeros((2,3,4,4))

我还有一个大小为(2,3,4)的3D数组'b',它带有一些索引值(全部在0到3之间).

我想要做的是将'a'中的每个最后一个数组的元素('a'的第四个维度)替换为'b'中的索引,使用1.

我可以使用3 for循环执行此操作,如下所示:

for i in a.shape[0]:
    for j in a.shape[1]:
        for z in a.shape[2]:
            a[i,j,z][b[i,j,z]] = 1 

但我想知道无论如何我都可以避免循环.类似的东西:

a[b] = 1

Francisco Va.. 5

是的,您可以以矢量形式进行此操作:

p,m,n,r = a.shape
a.reshape(-1,r)[np.arange(p*m*n),b.ravel()] = 1

这应该更容易推广到高阶ndarray。



1> Francisco Va..:

是的,您可以以矢量形式进行此操作:

p,m,n,r = a.shape
a.reshape(-1,r)[np.arange(p*m*n),b.ravel()] = 1

这应该更容易推广到高阶ndarray。

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有