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。您感到惊讶(我理解),但文档是正确的。这用于在策略点对数组进行分区的许多递归例程,例如合并排序。你想选择一个战略位置,而不是猜测一个轴心值。索引3是4元素,在最终排序的数组中是40。请注意,40左边的所有元素都比它小,右边的所有元素都大
从:
kth:分区依据的元素索引。第k次
元素的值将位于其最终排序位置,并且
较小的元素将在其前面移动,并且所有元素都相等或更大
背后的因素
索引3是4元素,它在最终排序的数组中是40。请注意,40左边的所有元素都比它小,右边的所有元素都大
从:
kth:分区依据的元素索引。第k次
元素的值将位于其最终排序位置,并且
较小的元素将在其前面移动,并且所有元素都相等或更大
背后的因素
谢谢虽然我不明白为什么我的例子还在发生。20应该排在30的左边吗?谢谢!虽然我不明白为什么我的例子还在发生。20应该排在30的左边吗?这很有道理,谢谢!看来我需要提高我的阅读理解能力。这很有道理,谢谢!看来我需要提高我的阅读理解能力。这很有道理,谢谢!看来我需要提高我的阅读理解能力。现在不要担心你的理解能力——文档并不清楚,直到例子消除了这个问题。这很有意义,谢谢!看来我需要提高我的阅读理解能力。现在还不用担心你的理解能力——文档还不清楚,直到例子消除了问题的歧义。