有没有办法循环遍历这个元组(?),其中左数组是数组中的位置,右数组是我想要插入到给定位置的值:
(array([ 0, 4, 6, ..., 9992, 9996, 9997]), array([3, 3, 3, ..., 3, 3, 3]))
上面的输出是从以下代码生成的:
np.where(h2 == h2[i,:].max())[1]
我希望结果如下:
array[0] = 3
array[4] = 3
...
array[9997] = 3
答案 0 :(得分:2)
只需使用简单的索引:
indices, values = my_tuple
array[indices] = values
如果你还没有最终数组,你可以使用像np.zeros
,np.ones
之类的欲望函数创建它,其大小与最大索引的大小相同。
答案 1 :(得分:1)
我想你想要site-packages/cython_gsl/__init__.pxd
元组的cython_gsl
:
transpose
事实上,有一个功能可以做到这一点:
where
迭代In [204]: x=np.arange(1,13).reshape(3,4)
In [205]: x
Out[205]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
In [206]: idx=np.where(x)
In [207]: idx
Out[207]:
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int32),
array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int32))
In [208]: ij=np.transpose(idx)
In [209]: ij
Out[209]:
array([[0, 0],
[0, 1],
[0, 2],
[0, 3],
[1, 0],
[1, 1],
[1, 2],
[1, 3],
[2, 0],
[2, 1],
[2, 2],
[2, 3]], dtype=int32)
,我可以打印:
np.argwhere(x)
ij
是转置的列表版本:
In [213]: for i,j in ij:
...: print('array[{}]={}'.format(i,j))
...:
array[0]=0
array[0]=1
array[0]=2