标签: array-difference

N次迭代后数组的所有元素的总和

给定一个Array arr [] = {4,6,8,3,6}数组的所有元素之和= 27.现在,让我们对数组执行一个操作: -

对于所有i <length(arr)-1,arr [i] = arr [i] -arr [i + 1]

所以现在数组变为{-2,-2,5,-3},数组的所有元素的总和= -2

我们再次执行相同的操作,数组变为{0,7,-8},数组的所有元素的总和= 1

因此,我们看到: -

第0次迭代后,arr [] = {4,6,8,3,6}.数组的所有元素的总和= 27

第一次迭代后,arr [] = { - 2,-2,5,-3}.数组的所有元素的总和= -2

第二次迭代后,arr [] = {0,-7,8}.数组的所有元素的总和= 1

第3次迭代后,arr [] = {7,-15}.数组的所有元素的总和= -8

给定整数N,问题是在第N次迭代后确定数组的所有元素的总和.

我已成功尝试过蛮力方法,显然时间复杂度是二次方的.我正在寻找一种具有更好时间复杂度的方法,如果可能的话,最好是线性的.

arrays sum elements array-difference difference

3
推荐指数
1
解决办法
1628
查看次数

使用Uasort对多维数组进行排序

目前我有一些看起来像这样的多维数组

Array ( 
    [71] => Array ( [author] => 2 [date] => 1392867376 ) 
    [49] => Array ( [author] => 2 [date] => 1392868188 ) 
    [75] => Array ( [author] => 14 [date] => 1392867388) 
    [67] => Array ( [author] => 2 [date] => 1392870805 ) 
)
Run Code Online (Sandbox Code Playgroud)

我想按"约会"对它们进行排序,但我不知道如何.我试过这个:

function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
uasort($visited, 'cmp');
Run Code Online (Sandbox Code Playgroud)

但由于我不知道,也找不到如何使用"比较功能"的参考,我在太空中.我所能找到的只是非常模糊的东西.目前这个由"作者"排序.

有人可以向我解释这些比较函数是如何工作的(或指向我的在线资源)并告诉我需要做什么来按"日期"对这个数组进行排序 - 同时保持所有密钥完好无损(密钥不得更改或删除)

非常感谢您提供的任何帮助.

PS:我尝试过array_multisort - 它擦除了我的密钥.

php arrays sorting multidimensional-array array-difference

3
推荐指数
1
解决办法
3139
查看次数

之后删除了 json_encode 中的空数组元素

我有简单的数组

$a = ['a', '', 'b','c','d'];
Run Code Online (Sandbox Code Playgroud)

如果我对它进行 json_encode,我就会得到

["a","","b","c","d"]
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试使用array_filterarray_diff删除空值

我会有

{"0":"a","2":"b","3":"c","4":"d"}
Run Code Online (Sandbox Code Playgroud)

但我不需要对数组键进行编码,我需要一个没有空元素且没有数组键的编码数组,如何解决?

PHP沙箱示例:http://sandbox.onlinephpfunctions.com/code/91635a5df7fcd954dd64fe92089f2beadc81c3c4

php json array-filter array-difference

3
推荐指数
1
解决办法
2577
查看次数

如何在numpy中构造向量的所有可能差异的矩阵

我有一个一维数组,可以这样说:

import numpy as np
inp_vec = np.array([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

现在,我想构造一个形式的矩阵

m = [[0, 1-2, 1-3], [2-1, 0, 2-3], [3-1, 3-2, 0]]
Run Code Online (Sandbox Code Playgroud)

当然,可以使用for循环来完成此操作,但是有没有更优雅的方法呢?

python numpy array-difference

3
推荐指数
1
解决办法
457
查看次数

Numpy数组元素之间的差异

这将是一个相当简单的问题,我想知道在Python中是否有一个快速而干净的解决方法.

假设我有一个nd-array定义如下:

In [10]: C = np.random.rand(2,3,3)

In [11]: C
Out[11]: 
array([[[ 0.43588471,  0.06600133,  0.81145749],
        [ 0.20270693,  0.85879686,  0.75778422],
        [ 0.68253449,  0.98287412,  0.63804605]],

       [[ 0.61591433,  0.36453861,  0.23798795],
        [ 0.26761896,  0.00657165,  0.04083067],
        [ 0.11177481,  0.55245769,  0.97274592]]])
Run Code Online (Sandbox Code Playgroud)

然后我计算第三维数组中值和前一个值之间的差异,如下所示:

In [12]: C[:, :, 1:] = C[:, :, 1:] - C[:, :, 0:C.shape[2]-1]

In [13]: C
Out[13]: 
array([[[ 0.43588471, -0.36988337,  0.74545616],
        [ 0.20270693,  0.65608994, -0.10101264],
        [ 0.68253449,  0.30033963, -0.34482807]],

       [[ 0.61591433, -0.25137572, -0.12655065],
        [ 0.26761896, -0.26104731,  0.03425902],
        [ 0.11177481,  0.44068288,  0.42028823]]])
Run Code Online (Sandbox Code Playgroud)

是否可以使用类似的技术回到原始值,还是必须使用for循环和临时变量? …

python numpy array-difference

2
推荐指数
1
解决办法
1317
查看次数

array_udiff 似乎不起作用

我正在尝试将两个数组与 array_udiff 进行比较,但它非常奇怪。似乎 array_udiff 没有得到正确的答案。这是现场演示。结果应该是一个空数组,但留下一个未过滤的元素。

<?php

$string = '{
  "sakiniai": [

      {
        "Faktas": "A",
        "value": "true"
      },
      {
        "Faktas": "B",
        "value": "true"
      },
      {
        "Faktas": "A",
        "value": "false"
      }
  ]
}';

$sakiniais = json_decode($string, true)['sakiniai'];


$v = $sakiniais[0];
$arr[] = $v;
$v['value'] = $v['value'] == "true" ? "false" : "true";
$arr[] = $v;
var_dump($arr);
var_dump($sakiniais);


print_r(array_udiff($arr, $sakiniais, function($a, $b){
/*
var_dump($a);
var_dump($b);
var_dump($a == $b);
echo "\n\n\n";
*/
return $a == $b ? 0 : -1;}
));
Run Code Online (Sandbox Code Playgroud)

输出 …

php arrays array-difference

2
推荐指数
1
解决办法
922
查看次数

为什么array_diff()将两个不同的数组比较为相同并返回空结果?

我有这个代码:

$a1 = array(31001);
$a2 = array(31001, 31002);
$diff = array_diff($a1, $a2);
var_dump($diff);
Run Code Online (Sandbox Code Playgroud)

我期待array_diff将array(0 => 31002)根据PHP文档返回:

返回一个数组,其中包含array1中任何其他任何数组中都不存在的条目.

但是发布的代码返回空数组.任何人都可以解释为什么会发生这种情况以及如何获得正确的结果?

这是PHPfiddle的例子.

感谢您提供任何帮助或有用的提示.

php arrays array-difference

1
推荐指数
1
解决办法
4900
查看次数

使用php的两个数组之间的差异

我有两个数组,如下所示,

$a =array(1,2,3,4);
$b =array(1,2,5,6);
Run Code Online (Sandbox Code Playgroud)

这是mycode

$c=array_diff($a,$b);
$c=array(3,4,5,6);
Run Code Online (Sandbox Code Playgroud)

但我希望它像下面这样

$c=array(3,4);
Run Code Online (Sandbox Code Playgroud)

注意:

我想要$a数组中不存在的数组值$b.

php arrays array-difference

1
推荐指数
1
解决办法
192
查看次数

从基于另一个数组的数组中删除值

我需要你们的一点帮助来修复此小代码。我们的想法是删除其内部的任何数字$remove_str$list_str。如您所见,我已经尝试通过将两个字符串都转换为数组来解决问题,并简单地遍历列表数组以在remove数组中搜索值,如果匹配则将其删除。但是,结果与我预期的完全不同。我一直在玩弄它一段时间,但是我的头在转动,以至于无法找到解决方案。

<?php

$remove_str = '5,6,8,56,195';
$list_str = '1,3,6,9,34,150,195,213';

$remove_arr = explode(',', $remove_str);
$list_arr = explode(',', $list_str);

foreach($list_arr as $value){
    $position = array_search($value, $remove_arr);

    if($position !== false){
        unset($list_arr[$position]);
    } else {
        continue;
    }
}

$result = implode(',', $list_arr);

echo $result;

?>
Run Code Online (Sandbox Code Playgroud)

结果:

1,6,9,150,195,213

预期结果:

1,3,9,34,150,213

php arrays string array-difference

1
推荐指数
1
解决办法
1101
查看次数

在laravel中将arrray值转换为请求中的整数

我想array_diff()在Laravel中使用两个数组.第一个数组如下所示:

    array:4 [
  0 => 7248
  1 => 7249
  2 => 7250
  3 => 7251
]
Run Code Online (Sandbox Code Playgroud)

第二个:

array:4 [
  0 => "7248"
  1 => "7249"
  2 => "7250"
  3 => "7251"
]
Run Code Online (Sandbox Code Playgroud)

这个我跟上了$request->request->get('ids', []);.

如何将一个数组转换为字符串或整数?由于这些数组可能会变大,我真的不想一次转换一个值.

更新:

array_diff()正在做它的工作,尽管有字符串与整数.

提前致谢!

php array-difference laravel

1
推荐指数
1
解决办法
363
查看次数