当前位置: 首页 > 知识库问答 >
问题:

从多维数组中选择和删除随机键

上官季
2023-03-14

我对随机性有一个问题。我有示例数组。

$example=array(
    'F1' => array('test','test1','test2','test5'),
    'F2' => array('test3', 'test4'),
    'F3' => array('one','twoo','threee','x'),
    'F5' => array('wow')
)

我想选择随机键从数组到其他指定大小的数组。在第二个数组中,我需要其他组的值。

  $amounts = array(4,3,1,2,1);
   $result=(
array(4) => ('test','test4','x','wow'),
array(3) => ('test2','test3','three'),
array(1) => ('test1')
array(2) => ('test5','one')
array(1) => ('twoo')
foreach($amounts as $key=>$amount){
   $random_key[$key]=array_rand($example,$amount);
   foreach($result[$key] as $key2=>$end){
    $todelete=array_rand($example[$end]);
    $result[$key][$key2]=$example[$amount][$todelete]
}
}

多谢帮忙!

共有1个答案

宇文弘懿
2023-03-14
$example = array(
    'F1' => array('test', 'test1', 'test2', 'test5'),
    'F2' => array('test3', 'test4'),
    'F3' => array('one', 'twoo', 'threee', 'x'),
    'F5' => array('wow')
);
$amounts = array(4, 3, 1, 2, 1);

$result = array();

$example = array_values($example);
//randomize the array
shuffle($example);
foreach ($example as $group) {
    shuffle($group);
}

//sort the example array by child length
usort($example, function ($a, $b) {
    return count($b) - count($a);
});

foreach ($amounts as $amount) {
    $tmpResult = array();
    for ($i = 0; $i < $amount; $i++) {
        if(empty($example[$i])){
            throw new \InvalidArgumentException('The total number of values in the array exceed the amount inputed');
        }
        $tmpResult[] = array_pop($example[$i]);
    }

    $result[] = $tmpResult;

    //sort the example array again by child length
    usort($example, function ($a, $b) {
        return count($b) - count($a);
    });
}

print_r($result);

测试结果:

Array
(
    [0] => Array
    (
        [0] => test5
        [1] => x
        [2] => test4
        [3] => wow
    )
    [1] => Array
    (
        [0] => test2
        [1] => threee
        [2] => test3
    )
    [2] => Array
    (
        [0] => test1
    )
    [3] => Array
    (
        [0] => twoo
        [1] => test
    )
    [4] => Array
    (
        [0] => one
    )
)
 类似资料:
  • 问题内容: 我有一个很大的数组,其中每一行都是一个时间序列,因此需要保持秩序。 我想为每行选择一个给定大小的随机窗口。 在我看来,理想的解决方案是: 但不幸的是,这不起作用 我现在要进行的操作非常慢: 当然,我可以对列表进行理解(并获得最小的速度提升),但是我想知道是否有某种超级聪明的numpy向量化方​​法可以做到这一点。 问题答案: 这是一种杠杆作用- 在具有行的更大数组上进行运行时测试-

  • 问题内容: 我有两个相关的numpy数组和。我需要从中选择随机行,并将其存储在数组中,并将其对应的值附加到随机选择的点的索引上。 我有另一个数组,它存储我不想采样的索引列表。 我怎样才能做到这一点? 样本数据: 如果这些是随机选择的(其中): 所需的输出将是: 我怎样才能做到这一点? 问题答案: 您可以使用以下方法创建随机索引: 然后,您只需要使用结果索引数组:

  • 问题内容: 我可以使用列出所有组合, 但这通常会很大。 给定和,我如何在不首先构建大量列表的情况下随机地均匀选择组合? 问题答案: 来自http://docs.python.org/2/library/itertools.html#recipes

  • 问题内容: 我有两个numpy数组: 我想从p_rem中的p_a_colors中删除所有列,所以我得到: 我认为,某些事情应该像 但我只是不知道轴或[:]正确。 我知道 可以,但是我试图避免(python)循环,因为我也想要正确的性能。 问题答案: 这就是我要做的: 您需要执行void dtype事情,以便numpy整体比较行。之后,使用内置的set例程似乎是显而易见的方法。

  • 问题内容: 我有一个数字值数组,我想从该数组中随机选择一个值,然后将其插入变量中。 我不确定您需要查看什么代码。所以, 这是我用来生成13个数字(1-13)并将其插入到数组中的循环。 效果很好,但是现在我需要从该数组中选择2个随机值(然后将其插入变量中,以备后用。 我到过很多网站,已经看到了类似的事情,例如将值插入到数组中,然后用于从数组中选择值,然后从数组中删除它。但是,无论何时我使用它都行不通

  • 问题内容: 假设我有一个数组,我想随机选择一个元素。 最简单的方法是什么? 明显的方法是。但是也许有红宝石之类的东西?或者如果不能通过扩展创建这种方法? 问题答案: Swift 4.2及更高版本 推荐的新方法是Collection协议的内置方法:。它返回一个可选参数以避免我以前假设的空情况。 如果不创建数组并且不能保证count> 0,则应执行以下操作: Swift 4.1及以下 只是为了回答您的