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

如何使用另一个Numpy数组设置多维Numpy数组的单个元素?

如何解决《如何使用另一个Numpy数组设置多维Numpy数组的单个元素?》经验,为你挑选了1个好方法。

如果我们有一个像numpy数组:

Array = np.zeros((2, 10, 10))

我们想要设置一个元素,由另一个元素给出

indexes = np.array([0,0,0])

我们怎么做?

Array[indexes] = 5 

将Array的FIRST维度的每个元素设置为5



1> Divakar..:

使用a数据数组和idx索引数组,使每行对应于要在数据数组中设置的一个元素,您可以 -

a[tuple(idx.T)] = 5

样品运行 -

In [94]: a = np.zeros((2,2,3),dtype=int)

In [95]: idx = np.array([[0,0,0],[1,1,0],[0,1,2]])

In [96]: a[tuple(idx.T)] = 5

In [97]: a
Out[97]: 
array([[[5, 0, 0],
        [0, 0, 5]],

       [[0, 0, 0],
        [5, 0, 0]]])

In [98]: a[tuple(idx.T)] = [5,10,15] # or set different values

In [99]: a
Out[99]: 
array([[[ 5,  0,  0],
        [ 0,  0, 15]],

       [[ 0,  0,  0],
        [10,  0,  0]]])

或者,我们可以计算线性指数,np.ravel_multi_index然后执行赋值np.put,就像这样 -

np.put(a,np.ravel_multi_index(idx.T,a.shape),5)

如果你正在处理三维数组,我们可以切割三维索引并指定另一种方法,如下所示 -

a[idx[:,0],idx[:,1],idx[:,2]] = 5

如果它只需要设置一个元素,那就做 -

a[tuple(idx)] = 5

样品运行 -

In [118]: a = np.zeros((2,2,3),dtype=int)

In [119]: idx = np.array([0,0,0])

In [120]: a[tuple(idx)] = 5

In [121]: a
Out[121]: 
array([[[5, 0, 0],
        [0, 0, 0]],

       [[0, 0, 0],
        [0, 0, 0]]])

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