【发布时间】:2018-01-19 22:14:27
【问题描述】:
如何在 Java 中使用逻辑索引访问数组元素?
Matlab/Octave 相当于我想做的:
A = [1 2 3 4 5 6]
logicalarray=[0 1 0 0 0 1];
result= A(logical)
给result =[2 6]
如果我在 Java 中有相同的 A 和 logicalarray。我如何在不使用循环的情况下获得 result?
【问题讨论】:
-
你不这样做,你必须循环 - 手动或使用流和过滤器隐式循环。
-
@luk2302 在性能方面应该首选哪一个,还是它们都一样?我们通常更喜欢在 Octave 中避免循环以获得更好的性能。你能用不同的方法发布一个答案吗?我是 Java 新手
-
Java 的语法完全不同,matlab 做不到。除非你想从java中调用matlab代码github.com/diffplug/matconsolectl
-
逻辑数组是否只包含 0 和 1 并以此指示
false和true?然后我会尝试使用一些Map<Integer,Boolean>,其中数字(来自A)作为键和一个布尔值来指示该数字是否要打包到结果数组或集合中。 -
我建议你忘掉你所知道的关于 Matlab 的一切,从头开始学习 java。它没有内置对逻辑掩码等矩阵运算的支持。完成此操作后,您可以查看像 nd4j.org 和 dst.lbl.gov/ACSSoftware/colt/index.html 这样的科学计算库,它们试图提供类似的功能。 P.S. 你只能接受一个答案,所以选择你最喜欢的一个并接受它。您可以随心所欲地投票,但在您的声望超过 15 人之前,您的点赞数将不会被计算在内。
标签: java matlab matrix indexing