java - 如何在Java中将长度为m的整数数组转换为长度为n的数组[已解决]
问题描述
嘿想将一个整数数组从给定长度(大于 852)转换为另一个长度为 852 的整数数组。
那是因为我想将 m 值显示为 852 像素。
逻辑方法只是将这两者之间的比率分开:
假设我要压缩的数组有 2556 个值。
这之间的比率是 2556/852 = 3,所以我可以抓住 3 个值并取平均值。
问题是比率并非总是整数,例如 2756/852 是 3.2347...
谁能帮我?
谢谢!
解决方案
我实际上解决了,我设法创建了一个函数 int Java,它完全符合我的要求。你只需要导入import java.util.Arrays;
功能是compressArr(arrayToCompress, newArrayLength)
返回一个浮点数组。
public static float[] compressArr(float[] arr1, int l){
float[] arr2 = new float[l];
for(int i = 0; i<l;i++){
arr2[i] = average(Arrays.copyOfRange(arr1,P1(i,arr1.length,l),P2(i,arr1.length,l)+1));
}
return arr2;
}
public static int P1(int x,int n, int d){
float r = ((float)n)/d;
int b = 0;
int p = 0;
for(int i = 0; i<x ; i++){
p = (int)(x*r-b);
b*=p;
}
return(p);
}
public static int P2(int x,int n, int d){
x+=1;
float r = ((float)n)/d;
int b = 0;
int p = 0;
for(int i = 0; i<x ; i++){
p = (int)(x*r-b);
b*=p;
}
return(p-1);
}
static float average(float a[]) {
int n = a.length;
float sum = 0;
for (int i = 0; i < n; i++)
sum += a[i];
return sum / n;
}
推荐阅读
- postgresql - Kubernetes 上的 Airflow:Pod 能够在 PostgreSql 上运行 initdb,但随后的 create_user 以 SQLite 为目标
- javascript - 从 Firefox 中的内容可编辑 div 获取范围不起作用
- microsoft-graph-api - 使用损坏的 Graph API 端点在 OneDrive 中搜索文件
- c++ - 使用 -fno-inline 对 memcmp 进行错误的 GCC 9(及更高版本)优化
- python - 了解如何在不使用 Python 编辑的情况下调用具有外部方法的函数
- javascript - 使用 JS Fetch API 上传时有效负载过大错误 (413)。通过邮递员工作正常
- c# - CsvHelper 不为双精度解析空列
- .net - 如何使用 Visual Studio 安装程序项目扩展创建升级安装程序
- node.js - 睡眠后 Cron 作业延迟
- office-js - 使用 excel javascript apis 获取数据透视表的数据源