这可能是初学者的问题,但我已经阅读了较长时间的文档,我找不到任何解决方案.我以为我可以为每个维度使用implode然后将这些字符串重新组合在一起str_split以创建新的简单数组.但是我永远不知道连接模式是否也不在值中,因此在执行之后str_split我的原始值可能会中断.
combine($array1, $array2)对于多维数组中的数组是否有类似的东西?
有以下查询结果:(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;不起作用.我尝试过对象数组,但对象属性不能是自由文本.我阅读教程越多,我就越困惑......
欢迎任何想法:)
我正在尝试获取Numpy数组中最大元素的索引.这可以使用numpy.argmax.我的问题是,我想找到整个数组中最大的元素并获得它的索引.
numpy.argmax 可以沿着一个轴应用,这不是我想要的,也可以应用在扁平数组上,这是我想要的.
我的问题是当我想要多维索引时,使用numpy.argmaxwith axis=None返回平面索引.
我可以divmod用来得到一个非平坦的索引,但这感觉很难看.有没有更好的方法呢?
我一直在疯狂地想弄清楚我在这里做错了什么蠢事.
我正在使用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) $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,但不确定这是否是最好的方法.另外,你会如何对此进行单元测试?
在对这个最近问题的评论中出现了一个有趣的讨论:现在,虽然那里的语言是C,但讨论已经转向C++标准所指定的内容,即使用 a 访问多维数组的元素时构成未定义行为的内容。功能类似于std::memcpy.
首先,这是该问题的代码,已转换为 C++ 并const尽可能使用:
#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
让我们从三个数组开始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) 在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子类吗?
任何人都可以帮助我在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)
基本上,按第一列排序.
干杯
arrays ×5
numpy ×4
python ×4
javascript ×2
php ×2
c ×1
c++ ×1
java ×1
performance ×1
sorting ×1