Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 基于另一个数组中的最小值删除数组中的行_Arrays_Python 3.x_Numpy - Fatal编程技术网

Arrays 基于另一个数组中的最小值删除数组中的行

Arrays 基于另一个数组中的最小值删除数组中的行,arrays,python-3.x,numpy,Arrays,Python 3.x,Numpy,我使用的是python-3.x,我搜索了以下错误,但没有找到正确的解决方案 错误是: IndexError: index 9 is out of bounds for axis 0 with size 9' 所以我要做的是创建一个随机二进制数组“binary”,也是一个随机数数组“value”,我想根据“value”数组中最小两个值的(索引)删除二进制数组中最低的两行 据我所知,我正在访问数组的边界之外,但解决此错误的正确方法是什么 因此,在我的代码中,问题在哪里?如何解决?非常感谢您的帮助

我使用的是python-3.x,我搜索了以下错误,但没有找到正确的解决方案

错误是:

IndexError: index 9 is out of bounds for axis 0 with size 9'
所以我要做的是创建一个随机二进制数组“binary”,也是一个随机数数组“value”,我想根据“value”数组中最小两个值的(索引)删除二进制数组中最低的两行

据我所知,我正在访问数组的边界之外,但解决此错误的正确方法是什么

因此,在我的代码中,问题在哪里?如何解决?非常感谢您的帮助

import random
import numpy as np
np.set_printoptions(threshold=np.nan)


for i in range (100):


    binary= np.random.randint (2, size=(10, 4))
    print("binary:" '\n',binary)


    value = np.random.randint (200, size=(10, 1))
    print("value:" '\n',value)




    for i in range (2):
#       the loseer how have the of the binarys who has the smaslets value 
        loser = np.argmin(value)
#        print ("loser:",loser)
#        print("loser:", loser,(value[loser]))
#        print (binary[loser,])
#        print("Loser=", "Index:", loser,"value:",(value[loser]), "binary:",(binary[loser,]))
        print("Index:", loser)
        print("value:",(value[loser]))
        print("binary:",(binary[loser,]))
        print("Loser=", "Index:", loser,"value:",(value[loser]), "binary:",(binary[loser,]))



        binary = np.delete(binary, (loser), axis=0)
        print("binary:" '\n',binary)

在这段代码中,我使用了np.argmin,因为我不想使用排序

代码中的问题是,在范围(2)中i的
的第一次迭代后,您从
二进制
中删除了一个元素,但没有从
中删除。因此,这些数组不再具有相同的长度,它们中的索引也不一致。此外,通过在两次迭代中执行
loser=np.argmin(value)
,您只需两次找到相同的最小值,而不是两个最小值

相反,您可以执行以下操作:

binary= np.random.randint (2, size=(10, 4))
value = np.random.randint (200, size=(10, 1))

ind = np.argpartition(-value.T[0], -2)[-2:]
binary=np.delete(binary,ind,0)
与排序不同,它以线性时间运行,使用。它查找
k
最大元素的索引(不按排序顺序)。是的


因为您需要2个最小的元素,而且我还将
value
重塑为
1D
数组以将其输入
np.argpartition

代码中的问题是,在范围(2)
中i的
的第一次迭代后,您从
二进制
中删除了一个元素,但没有从
中删除。因此,这些数组不再具有相同的长度,它们中的索引也不一致。此外,通过在两次迭代中执行
loser=np.argmin(value)
,您只需两次找到相同的最小值,而不是两个最小值

相反,您可以执行以下操作:

binary= np.random.randint (2, size=(10, 4))
value = np.random.randint (200, size=(10, 1))

ind = np.argpartition(-value.T[0], -2)[-2:]
binary=np.delete(binary,ind,0)
与排序不同,它以线性时间运行,使用。它查找
k
最大元素的索引(不按排序顺序)。是的

因为您需要2个最小的元素,而且我还将
value
重塑为
1D
数组以将其输入
np.argpartition