Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以循环使用np.where的返回值?_Python_Arrays_Numpy - Fatal编程技术网

Python 有没有一种方法可以循环使用np.where的返回值?

Python 有没有一种方法可以循环使用np.where的返回值?,python,arrays,numpy,Python,Arrays,Numpy,有没有办法循环这个元组(?),其中左数组是数组中的位置,右数组是我想插入到给定位置的值: (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 只需使用一个简单的索引: ind

有没有办法循环这个元组(?),其中左数组是数组中的位置,右数组是我想插入到给定位置的值:

(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

只需使用一个简单的索引:

indices, values = my_tuple

array[indices] = values

如果您还没有最终的数组,您可以使用像
np.zero
np.ones
,等等这样的期望函数创建它,其大小为最大索引的大小

只需使用一个简单的索引:

indices, values = my_tuple

array[indices] = values

如果您还没有最终的数组,您可以使用像
np.zero
np.ones
,等等这样的期望函数创建它,其大小为最大索引的大小

我想您需要
转置
,其中
元组:

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
zip(*)
是transpose的列表版本:

for i,j in zip(*idx):
     print(i,j)

我想您需要
转置
,其中
元组:

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
zip(*)
是transpose的列表版本:

for i,j in zip(*idx):
     print(i,j)