【问题标题】:copying column of a 2D array as 1D array in java?在java中将二维数组的列复制为一维数组?
【发布时间】:2011-07-10 17:23:39
【问题描述】:

假设我有一个二维数组:

int[][] a = new int[4][3];

这样填充:

1 2 3
4 5 6
7 8 9
2 5 7

在 java 中是否有任何快捷方法可以将第 1 列提取为单个数组:

array1 = {1 4 7 2};

目前我正在做的是遍历整个二维矩阵并使用 if 条件 (if j==0),我遍历行并将值添加到一维数组。
只是想知道 java 中是否为此类任务提供了任何标准方法。

【问题讨论】:

  • 你为什么要遍历整个矩阵?为什么不简单:for (i = 0; i < 4; i++) { b[i] = a[i][0]; }
  • 那是因为我需要将所有列提取为单独的数组。问题是矩阵太大了,所以我想知道是否有一些更简单的方法可用。
  • 那么请更新您的问题以解释您真正想要做什么...

标签: java arrays multidimensional-array


【解决方案1】:

不,没有捷径可以做到这一点。您必须遍历数组,切换 x 和 y 索引。

【讨论】:

  • 当然,如果它是您代码中的重复模式,您应该编写一个辅助方法来为您完成它。或者考虑一下你不断转置矩阵的事实是否意味着你的设计被破坏了!
  • 实际上我必须计算 cosineSimilarity,这需要遍历转置列,它是对大小为 [2500]x[3000] 的巨大矩阵的递归计算。我能想到的唯一想法是现在将计算集成到矩阵中。
【解决方案2】:

没有这样的内置方法。你必须写一个简单的循环。

【讨论】:

    【解决方案3】:

    您可能想consider use of a matrix library。但这是非常简单的东西 - 如果这就是您所需要的,那么您编写它的速度可能比您在库上的速度更快。

    【讨论】:

      【解决方案4】:

      其实有一个简单的方法:

      int[] array1 = a[0];
      

      【讨论】:

      • 1.这实际上不是 复制 数组,而只是对引用进行切片。 2. 它引用的是行,而不是列。
      猜你喜欢
      • 2019-12-30
      • 2015-07-20
      • 2012-11-13
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      相关资源
      最近更新 更多