java - 根据给定长度迭代地将数组拆分为子数组
问题描述
如何在 Java 中创建数组的子数组。给定一个数字 3 和 x [2,4,6,30,9]
,答案是X1[2,4,6] X2[4,6,30] X3[6,30,9]
这是我到目前为止所拥有的,但它只打印前三个元素。我还必须打印每个子数组的中位数。
double[] floatsArr = new double[3];
// floats is the array with all the elements in
for(int i = 0; i < floats.length; i++){
for(int k = 1; k < (filterSize+1); k++){
floatsArr[k] = floats[k];
System.out.println(floatsArr[k]);
}
}
解决方案
您似乎想从数组中创建给定长度的所有子数组。
您可以手动完成:
static double[][] subArrays(double[] arr, int k)
{
double[][] subArrs = new double[arr.length-k+1][k];
for(int i=0; i<subArrs.length; i++)
for(int j=0; j<k; j++)
subArrs[i][j] = arr[i+j];
return subArrs;
}
或者使用内置方法Arrays.copyOfRange
:
static double[][] subArrays(double[] arr, int k)
{
double[][] subArrs = new double[arr.length-k+1][];
for(int i=0; i<subArrs.length; i++)
subArrs[i] = Arrays.copyOfRange(arr, i, i+k);
return subArrs;
}
测试:
double[] arr = {2, 4, 6, 30, 9};
for(double[] subArr : subArrays(arr, 3))
System.out.println(Arrays.toString(subArr));
输出:
[2.0, 4.0, 6.0]
[4.0, 6.0, 30.0]
[6.0, 30.0, 9.0]
推荐阅读
- tensorflow - 如何在张量流中填充 1 个维度向量?获取 InvalidArgumentError:填充必须是 tf.pad 的 2 列矩阵
- arrays - 如何在批处理文件的 for 循环中填充数组?
- javascript - 如何设置单选按钮的样式,使其看起来像普通的可点击按钮?
- snowflake-cloud-data-platform - 任何给定时间点网络上的雪花总字节数
- angular - 修改角度选择的背景颜色
- angularjs - 值未显示在 Angular 中
- reactjs - 加载资源失败:服务器响应状态为 403(),youtube API with Netlify
- reactjs - 重新渲染兄弟组件后在父组件中渲染子组件
- arrays - 如何在 VBA 中动态执行类似 Excel 的操作?
- python - 从字典中的嵌套列表中删除键和值