标签: multidimensional-array

如何在PHP中将多维数组"扁平化"为简单数组?

这可能是初学者的问题,但我已经阅读了较长时间的文档,我找不到任何解决方案.我以为我可以为每个维度使用implode然后将这些字符串重新组合在一起str_split以创建新的简单数组.但是我永远不知道连接模式是否也不在值中,因此在执行之后str_split我的原始值可能会中断.

combine($array1, $array2)对于多维数组中的数组是否有类似的东西?

php arrays multidimensional-array

73
推荐指数
10
解决办法
11万
查看次数

JavaScript中的多维关联数组

有以下查询结果:(key1和key2可以是任何文本)

id   key1     key2     value

1    fred     apple    2
2    mary     orange   10
3    fred     banana   7
4    fred     orange   4
5    sarah    melon    5
...
Run Code Online (Sandbox Code Playgroud)

我希望将数据存储在网格中(可能作为一个数组)循环所有记录,如下所示:

         apple    orange   banana  melon
fred        2        4         7     -
mary        -        10        -     -
sarah       -        -         -     5
Run Code Online (Sandbox Code Playgroud)

在PHP中,使用关联数组非常简单:

$result['fred']['apple'] = 2;
Run Code Online (Sandbox Code Playgroud)

但在像这样的JavaScript关联数组中不起作用.阅读了大量的教程后,我能得到的就是:

arr=[];
arr[1]['apple'] = 2;
Run Code Online (Sandbox Code Playgroud)

arr['fred']['apple'] = 2;不起作用.我尝试过对象数组,但对象属性不能是自由文本.我阅读教程越多,我就越困惑......

欢迎任何想法:)

javascript associative-array multidimensional-array

73
推荐指数
5
解决办法
20万
查看次数

返回非平坦指数的numpy数组的Argmax

我正在尝试获取Numpy数组中最大元素的索引.这可以使用numpy.argmax.我的问题是,我想找到整个数组中最大的元素并获得它的索引.

numpy.argmax 可以沿着一个轴应用,这不是我想要的,也可以应用在扁平数组上,这是我想要的.

我的问题是当我想要多维索引时,使用numpy.argmaxwith axis=None返回平面索引.

我可以divmod用来得到一个非平坦的索引,但这感觉很难看.有没有更好的方法呢?

python numpy multidimensional-array

73
推荐指数
2
解决办法
3万
查看次数

从NumPy数组中选择特定的行和列

我一直在疯狂地想弄清楚我在这里做错了什么蠢事.

我正在使用NumPy,我有特定的行索引和特定的列索引,我想从中选择.这是我的问题的要点:

import numpy as np

a = np.arange(20).reshape((5,4))
# array([[ 0,  1,  2,  3],
#        [ 4,  5,  6,  7],
#        [ 8,  9, 10, 11],
#        [12, 13, 14, 15],
#        [16, 17, 18, 19]])

# If I select certain rows, it works
print a[[0, 1, 3], :]
# array([[ 0,  1,  2,  3],
#        [ 4,  5,  6,  7],
#        [12, 13, 14, 15]])

# If I select certain rows and a single column, it works
print …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy multidimensional-array numpy-slicing

71
推荐指数
4
解决办法
12万
查看次数

PHP将两个关联数组合并为一个数组

$array1 = array("$name1" => "$id1");

$array2 = array("$name2" => "$id2", "$name3" => "$id3");
Run Code Online (Sandbox Code Playgroud)

我需要一个新的数组合在一起,即它会

$array3 = array("$name1" => "$id1", "$name2" => "$id2", "$name3" => "$id3");
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

对不起,我忘记了,这些ID永远不会相互匹配,但从技术上讲,名称可能,但不太可能,并且它们都需要列在一个数组中.我查看了array_merge,但不确定这是否是最好的方法.另外,你会如何对此进行单元测试?

php arrays associative-array multidimensional-array

70
推荐指数
3
解决办法
13万
查看次数

使用“memcpy”复制二维数组在技术上是未定义的行为吗?

在对这个最近问题的评论中出现了一个有趣的讨论:现在,虽然那里的语言是C,但讨论已经转向C++标准所指定的内容,即使用 a 访问多维数组的元素时构成未定义行为的内容。功能类似于std::memcpy.

\n

首先,这是该问题的代码,已转换为 C++ 并const尽可能使用:

\n
#include <iostream>\n#include <cstring>\n\nvoid print(const int arr[][3], int n)\n{\n    for (int r = 0; r < 3; ++r) {\n        for (int c = 0; c < n; ++c) {\n            std::cout << arr[r][c] << " ";\n        }\n        std::cout << std::endl;\n    }\n}\n\nint main()\n{\n    const int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };\n    int arr_copy[3][3];\n    print(arr, 3);\n    std::memcpy(arr_copy, arr, sizeof arr);\n …
Run Code Online (Sandbox Code Playgroud)

c c++ multidimensional-array undefined-behavior language-lawyer

70
推荐指数
4
解决办法
6066
查看次数

为什么numpy的einsum比numpy的内置函数更快?

让我们从三个数组开始dtype=np.double.使用numpy 1.7.1在intel CPU上执行计时,编译icc并链接到intel mkl.带有numpy 1.6.1的AMD cpu与gccwithout 编译mkl也用于验证时序.请注意,时序与系统大小几乎呈线性关系,并不是由于numpy函数if语句中产生的小开销,这些差异将以微秒而非毫秒显示:

arr_1D=np.arange(500,dtype=np.double)
large_arr_1D=np.arange(100000,dtype=np.double)
arr_2D=np.arange(500**2,dtype=np.double).reshape(500,500)
arr_3D=np.arange(500**3,dtype=np.double).reshape(500,500,500)
Run Code Online (Sandbox Code Playgroud)

首先让我们看一下这个np.sum函数:

np.all(np.sum(arr_3D)==np.einsum('ijk->',arr_3D))
True

%timeit np.sum(arr_3D)
10 loops, best of 3: 142 ms per loop

%timeit np.einsum('ijk->', arr_3D)
10 loops, best of 3: 70.2 ms per loop
Run Code Online (Sandbox Code Playgroud)

鲍尔斯:

np.allclose(arr_3D*arr_3D*arr_3D,np.einsum('ijk,ijk,ijk->ijk',arr_3D,arr_3D,arr_3D))
True

%timeit arr_3D*arr_3D*arr_3D
1 loops, best of 3: 1.32 s per loop

%timeit np.einsum('ijk,ijk,ijk->ijk', arr_3D, arr_3D, arr_3D)
1 loops, best of 3: 694 ms per loop
Run Code Online (Sandbox Code Playgroud)

外产品:

np.all(np.outer(arr_1D,arr_1D)==np.einsum('i,k->ik',arr_1D,arr_1D)) …
Run Code Online (Sandbox Code Playgroud)

python arrays performance numpy multidimensional-array

69
推荐指数
4
解决办法
9732
查看次数

连接Numpy数组而不复制

在Numpy中,我可以使用np.appendor 连接两个端到端的数组np.concatenate:

>>> X = np.array([[1,2,3]])
>>> Y = np.array([[-1,-2,-3],[4,5,6]])
>>> Z = np.append(X, Y, axis=0)
>>> Z
array([[ 1,  2,  3],
       [-1, -2, -3],
       [ 4,  5,  6]])
Run Code Online (Sandbox Code Playgroud)

但是这些会复制他们的输入数组:

>>> Z[0,:] = 0
>>> Z
array([[ 0,  0,  0],
       [-1, -2, -3],
       [ 4,  5,  6]])
>>> X
array([[1, 2, 3]])
Run Code Online (Sandbox Code Playgroud)

有没有办法将两个数组连接到视图中,即没有复制?那需要一个np.ndarray子类吗?

python numpy multidimensional-array

68
推荐指数
2
解决办法
3万
查看次数

68
推荐指数
4
解决办法
14万
查看次数

如何按列值对二维数组进行排序?

任何人都可以帮助我在JavaScript中对二维数组进行排序吗?

它将具有以下格式的数据:

[12, AAA]
[58, BBB]
[28, CCC]
[18, DDD]
Run Code Online (Sandbox Code Playgroud)

排序时应该如下所示:

[12, AAA]
[18, DDD]
[28, CCC]
[58, BBB]
Run Code Online (Sandbox Code Playgroud)

基本上,按第一列排序.

干杯

javascript arrays sorting multidimensional-array

68
推荐指数
7
解决办法
14万
查看次数