このような機能があるのだろうか:
my_fun(my_list, *arg)
例えば:
my_list = ['a','b','c','d','f',1, 2, 3, 4, 5]
fun_i_am_looking_for (my_list, 0.4, 0.4, 0.1)
result = [['a', 2, 5, 'd'], ['c', 1, 4, 3], ['f']]
ご覧のとおり、合計arg
は0.9です。したがって、からの1つの要素my_list
は結果に表示されません。
私はあることを知っています:
numpy.random.permutate(dataframe.index)
しかし、それはコレクションをランダム化するだけですが、比率またはパーセントとして定義された長さの小さなリストを取得したいと思います。サブリストを均等にしたくありません。そのような関数が存在しない場合、私は自分で作成し、すぐに使える解決策を探します。
すぐに解決できる解決策はないようですが、これはうまくいくでしょう:
import numpy as np
def split_by_ratio(arr, *ratios):
arr = np.random.permutation(arr)
ind = np.add.accumulate(np.array(ratios) * len(arr)).astype(int)
return [x.tolist() for x in np.split(arr, ind)][:len(ratios)]
今:
>>> my_list = ['a','b','c','d','f',1, 2, 3, 4, 5]
>>> split_by_ratio(my_list, 0.4, 0.4, 0.1)
[['f', '5', '3', 'a'], ['d', 'b', 'c', '2'], ['4']]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加