gpt4 book ai didi

c++ - 如何在运行时指定数组的维数和?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:23 26 4
gpt4 key购买 nike

我正在研究建立分布熵的函数。它使用一个 copula,如果有人熟悉的话。我需要根据“关心”的维度来总结数组中的值。

示例:考虑以下示例...

Dimension 0 (across)_ _ _ _ _ _ _ _ _ _ _ _ _|_ 0 _|_ 0 _|_ 0 _|_ 2 _|  Dimension 1|_ 1 _|_ 0 _|_ 2 _|_ 0 _|   (down)|_ 0 _|_ 3 _|_ 0 _|_ 6 _||_ 0 _|_ 0 _|_ 0 _|_ 0 _|I "care about" dimension 0 only, and "don't care" about the rest (dim 1).Summing this array with the above specifications will"collapse" the "stacks" of dimension 1 down to a single 4 x 1 array:_ _ _ _ _ _ _ _ _ _ _ _ _ |_ 1 _|_ 3 _|_ 2 _|_ 8 _|This can then be summed, or have any operation performed.

我需要使用“n”维数组来执行此操作,可能是 20 个。此外,我需要能够做到这一点,关注某些维度,并折叠其余维度。我对此特别困难,因为我无法想象 20 个维度 :p 。如果有人可以帮助我设置一些 c/c++ 代码来折叠/求和,我将非常感激。

更新:

刚到家。这里有一些信息可以回答您的问题:

  1. 很抱歉回滚编辑,我希望当我点击回滚时它会显示更改,这样我就可以看到我搞砸了什么,有点像维基百科。我发现情况并非如此。
  2. @jeff - 什么没有意义?我使用这项出色的服务是出于(我认为的)正当理由。我想在我的爱好上做得更好,仅此而已,因为我在高中。我的许多帖子都与实现遗传算法有关(这篇帖子,sparsearray,排列数组,指针操作)。
  3. 我正在使用稀疏数组表示,因为使用传统(密集)数组可能会超过宇宙中的分子数量。目前,sparsearray 本身的实现并不重要,因为我正在努力使其在进入稀疏表示之前使用标准数组。对于那些没有看过我之前的问题的人,我使用二叉搜索树作为结构来包含稀疏数组点,并使用“驱动程序”函数根据需要遍历树,返回函数设计的目的。这很灵活,因此我可以适应许多不同的访问数组的方法。
  4. 该结构是一个超立方体,维数是在运行时指定的,以及每个维度的长度(它们都是相同的,因为它是一个超立方体)。

感谢大家的贡献。

最佳答案

这可能有应用。假设您实现了 2D Conway 的生命游戏(它定义了一个 2D 平面,1 表示“活着”,0 表示“死了”)并且您存储了每次迭代的游戏历史记录(然后定义了一个 3D 立方体)。如果您想知道历史上有多少细菌存活,您可以使用上述算法。您可以对生命游戏网格的 3D(以及 4D、5D 等)版本使用相同的算法。

我会说这是一个递归问题,我还不是 C 程序员,但我知道在 C 中这是可能的。在 python 中,


def iter_arr(array):
sum = 0
for i in array:
if type(i) == type(list()):
sum = sum + iter_arr(i)
else:
sum = sum + i
return sum
  1. 遍历数组中的每个元素
  2. 如果元素是另一个数组,再次调用该函数
  3. 如果元素不是数组,将其添加到总和
  4. 返回金额

然后您可以将其应用于“关心”维度中的每个元素。

由于鸭子类型,这在 python 中更容易......

关于c++ - 如何在运行时指定数组的维数和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com