如何在python中使用split函数按降序拆分数组列表?

我正在尝试从用户处获取数组输入,并在每个具有3个元素的子数组中拆分数组。如果不。数组中的元素不能被3整除,我想从第一个子数组中将较小的数组的大小增加1。

我尝试使用split函数,但是这给了我递增顺序的子数组。我要按降序排列。

import numpy as np
def array_list(x):

  original_list = []
  for i in range (0,x):
    abc = input("Enter element: ")
    original_list.append(abc)
  original_list.sort()
  return(original_list)

x = int(input("Enter no. of elements: "))
Input = array_list(x)
print("Input = ",Input)
print("Output = ",np.split(Input,[3]))

我的代码执行如下:

Input =  ['11','13','15','23','34','7','77']  
Output =  [array(['11','15']),array(['23','77']]

我希望输出为:

Input =  ['11','77']    
Output = [array(['11',23],array(['34','77']  

我还需要帮助进行排序

hnhhdzh 回答:如何在python中使用split函数按降序拆分数组列表?

第一个问题是您需要将数字abc转换为int(就像对x所做的那样)以对数字进行排序。要根据需要拆分阵列,可以在拆分之前反转阵列。

import numpy as np


def array_list(x):
    original_list = []
    for i in range(0,x):
        abc = int(input("Enter element: "))
        original_list.append(abc)
    original_list.sort(reverse=True)
    return original_list


x = int(input("Enter no. of elements: "))
Input = array_list(x)
print("Input = ",Input)
Output = np.array_split(Input,int(x/3)) if x >= 3 else Input
print("Output = ",Output)
# test 1
Enter no. of elements: 7
Input =  [77,34,23,15,13,11,7]
Output =  [array([77,15]),array([13,7])]

# test 2
Enter no. of elements: 8
Input =  [77,45,23]),array([15,7])]

# test 3
Enter no. of elements: 9
Input =  [99,77,7]
Output =  [array([99,45]),array([34,7])]
,
In [16]: x = np.array(['11','13','15','23','34','7','77'])                
In [17]: np.array_split(x,[4,3])                                                
Out[17]: 
[array(['11','23'],dtype='<U2'),array([],array(['23','77'],dtype='<U2')]

一种计算分割的尝试方法:

In [25]: s = x.shape[0]                                                         
In [26]: cnt = s//3                                                             
In [27]: extra = s%3                                                            
In [28]: alist = [3+1]*extra + [3]*(cnt-extra)                                  
In [29]: alist                                                                  
Out[29]: [4,3]

但是,等等,array_split已经这样做了:

In [33]: np.array_split(x,2)                                                    
Out[33]: 
[array(['11',array(['34',dtype='<U2')]

How does the numpy function `array_split` work mathematically?

本文链接:https://www.f2er.com/3142457.html

大家都在问