Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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 Numpy分区未按预期工作_Python_Numpy - Fatal编程技术网

Python Numpy分区未按预期工作

Python Numpy分区未按预期工作,python,numpy,Python,Numpy,据我所知,在本例中,给定的数组在30之前应该有20。为什么20排序为大于30的数字 推理:np.partition应在值30上拆分,并将小于30的所有值放在左边,大于30的所有值放在右边20小于30但在30右侧 nums = np.array([70, 50, 20, 30, -11, 60, 50, 40]) print(nums[3]) print(np.partition(nums, 3)) >>> 30 >>> array([-11, 30, 20

据我所知,在本例中,给定的数组在
30
之前应该有
20
。为什么
20
排序为大于
30
的数字

推理:
np.partition
应在值
30
上拆分,并将小于
30
的所有值放在左边,大于
30
的所有值放在右边
20
小于
30
但在
30
右侧

nums = np.array([70, 50, 20, 30, -11, 60, 50, 40])
print(nums[3])
print(np.partition(nums, 3))
>>> 30
>>> array([-11,  30,  20,  40,  50,  60,  50,  70])
请尝试以下代码:

def partition(pred, iterable):
    trues = []
    falses = []
    for item in iterable:
        if pred(item):
            trues.append(item)
        else:
            falses.append(item)
    return trues, falses
用法

输出:

trues
[12, 42]
falses
[1, 4, 7]
或此代码:

import numpy as geek
out_arr = geek.partition(nums, (0, 3))
print ("Output partitioned array : ", out_arr)
请尝试以下代码:

def partition(pred, iterable):
    trues = []
    falses = []
    for item in iterable:
        if pred(item):
            trues.append(item)
        else:
            falses.append(item)
    return trues, falses
用法

输出:

trues
[12, 42]
falses
[1, 4, 7]
或此代码:

import numpy as geek
out_arr = geek.partition(nums, (0, 3))
print ("Output partitioned array : ", out_arr)

分区的文档有点棘手;您还需要检查示例。当您指定分区的位置时,您给出的是已排序的位置。你的电话说“给我一个分区——一种未完成的分区——
nums
。确保元素3在正确的位置。”


排序数组的第三个元素是40,而不是30。您感到惊讶(我理解),但文档是正确的。这用于在策略点对数组进行分区的许多递归例程,例如合并排序。你想要选择一个战略位置,而不是猜测一个轴心值。

分区的文档有点棘手;您还需要检查示例。当您指定分区的位置时,您给出的是已排序的位置。你的电话说“给我一个分区——一种未完成的分区——
nums
。确保元素3在正确的位置。”


排序数组的第三个元素是40,而不是30。您感到惊讶(我理解),但文档是正确的。这用于在策略点对数组进行分区的许多递归例程,例如合并排序。你想选择一个战略位置,而不是猜测一个轴心值。

索引34元素,在最终排序的数组中是40。请注意,40左边的所有元素都比它小,右边的所有元素都大

从:

kth:分区依据的元素索引。第k次 元素的值将位于其最终排序位置,并且 较小的元素将在其前面移动,并且所有元素都相等或更大 背后的因素


索引34元素,它在最终排序的数组中是40。请注意,40左边的所有元素都比它小,右边的所有元素都大

从:

kth:分区依据的元素索引。第k次 元素的值将位于其最终排序位置,并且 较小的元素将在其前面移动,并且所有元素都相等或更大 背后的因素


谢谢虽然我不明白为什么我的例子还在发生。20应该排在30的左边吗?谢谢!虽然我不明白为什么我的例子还在发生。20应该排在30的左边吗?这很有道理,谢谢!看来我需要提高我的阅读理解能力。这很有道理,谢谢!看来我需要提高我的阅读理解能力。这很有道理,谢谢!看来我需要提高我的阅读理解能力。现在不要担心你的理解能力——文档并不清楚,直到例子消除了这个问题。这很有意义,谢谢!看来我需要提高我的阅读理解能力。现在还不用担心你的理解能力——文档还不清楚,直到例子消除了问题的歧义。