Python 是由'返回的块;np.array_split()';按降序排列?

Python 是由'返回的块;np.array_split()';按降序排列?,python,numpy,Python,Numpy,在使用整数的numpy.array\u split中,当部分的数量不是所考虑的轴上大小的除数时,某些部分可能更小或更大,例如 import numpy as np [chunk.shape[0] for chunk in np.array_split(np.arange(12), 5)] 返回块大小:[3,3,2,2,2] 虽然没有提到这一点,但似乎最小的块位于列表的末尾。尝试一个示例可以证实,对于多达200个元素的数组,无论需要多少块,这一点都是正确的 import numpy as np

在使用整数的
numpy.array\u split
中,当部分的数量不是所考虑的轴上大小的除数时,某些部分可能更小或更大,例如

import numpy as np
[chunk.shape[0] for chunk in np.array_split(np.arange(12), 5)]
返回块大小:
[3,3,2,2,2]

虽然没有提到这一点,但似乎最小的块位于列表的末尾。尝试一个示例可以证实,对于多达200个元素的数组,无论需要多少块,这一点都是正确的

import numpy as np    
not_ordered = 0
for sample_size in np.arange(2,200):
    a = np.arange(sample_size)
    for n in np.arange(2,sample_size//2):
        chunks = np.array_split(a,n)
        sizes = [chunk.shape[0] for chunk in chunks]
        for i in np.arange(1, len(sizes)):
            if sizes[i] > sizes[i-1]:
                not_ordered += 1
                break
print (f'Not ordered: {not_ordered}')
函数背后的算法是否保证降序?或者,在使用返回的结果时,这是不可依赖的吗

对于长度为l且应拆分为n个部分的数组 返回大小为l//n+1的l%n子数组和大小为l//n的其余子数组

由于
l
n
在每次运行中都是固定的,因此我们可以得出结论,对于返回数组中的每个元素,下一个元素的长度不会超过当前值

编辑:如果有疑问,因为这是
python
,我们可以。正如您所感兴趣的那样,
索引\u或\u节
是整数相关的部分是:

Nsections = int(indices_or_sections)
if Nsections <= 0:
    raise ValueError('number sections must be larger than 0.')
Neach_section, extras = divmod(Ntotal, Nsections)
section_sizes = ([0] +
                 extras * [Neach_section+1] +
                 (Nsections-extras) * [Neach_section])
div_points = _nx.array(section_sizes, dtype=_nx.intp).cumsum()
Nsections=int(索引或节)

如果@Marchtheking可能是重复的,我读了这个问题(并提供了赏金),它不是重复的。你能从“和其余的”中推断出来吗?是的,这就是我对这个问题的理解。