稀疏数组to

package SparseArray;

public class SparseArray {
    private int [][] chess_array ;
    public int [][] sparse_array;
    private int n;

    public SparseArray() {}
    public void setchess_array(int [][] chess_array) {
        this.chess_array = chess_array;
    }
    public void setparse_array(int [][] sparse_array){
        this.sparse_array=sparse_array;
    }

    public int [][] getchess_array() {
        return chess_array;
    }
    public int [][] getsparse_array(){
        return sparse_array;
    }


    public void setn(int n) {
        this.n = n;
    }

    public int getn() {
        return n;
    }

    public int [][] chess_array_to_sparse_array() {
        int row = chess_array.length;
        int col = chess_array[0].length;
        //数组在Java中必须在声明时指定大小,或者在使用时直接初始化,才能赋值
        int count = 0;
        for(int r = 0; r < row; r++) {
            for(int c = 0; c < col; c++) {
                if(chess_array[r][c] !=n) {
                    count++;
                }
            }
        }
        int [] [] sparse_array=new int [count+1][3];
        int s=0;
        for(int r = 0; r < row; r++) {
            for(int c = 0; c < col; c++) {
                if(chess_array[r][c] !=n) {
                    s++;
                    sparse_array[s][0]=r;
                    sparse_array[s][1]=c;
                    sparse_array[s][2]=chess_array[r][c];
                }
            }
        }
        sparse_array[0][0]=row;
        sparse_array[0][1]=col;
        sparse_array[0][2]=count;
        return sparse_array;
    }
}

———————————————————————————————————————————

package SparseArray;

public class Main {
    public static void main(String[] args) {
        int [] [] array={{0,0,10,0,0,0,0}, {0,4,0,0,0,0,0},{7,0,0,0,0,0,0}
        };
        SparseArray to =new SparseArray();
        to.setchess_array(array);

        to.setn(0);

        int [][] spare = to.chess_array_to_sparse_array();
        int row= spare.length;
        int clo=spare[0].length;
        for(int i=0;i<row;i++){
            for(int j=0;j<clo;j++){
                System.out.print(spare[i][j]);
                System.out.print("|");
            }
            System.out.println();
        }

    }
}

这个是二维数组转稀疏数组,注意有两次遍历!!!因为数组的长度是不可以改变的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Torch 中的稀疏矩阵可以使用 COO (Coordinate) 或 CSR (Compressed Sparse Row) 格式进行表达。COO 格式将矩阵中非零元素的坐标和值分别存储在三个数组中,而 CSR 格式则将非零元素的值和列坐标分别存储在两个数组中,同时使用一个指针数组来记录每行的起始位置。这些格式可以通过 torch.sparse 模块中的函数进行创建和操作。 ### 回答2: 在PyTorch中,稀疏矩阵可以通过torch.sparse模块进行表示和操作。稀疏矩阵是指矩阵中绝大部分元素为零的情况,为了提高存储和计算效率,可以使用稀疏矩阵来表示。在torch.sparse模块中,有两种主要的稀疏矩阵表示方法,分别是COO(坐标格式)和CSR(压缩稀疏行格式)。 COO格式是一种简洁的表示方法,它通过三个Tensor来表示稀疏矩阵的非零元素的行、列以及对应的值。例如,可以通过torch.sparse_coo_tensor函数来创建一个COO格式的稀疏矩阵。创建时需要指定非零元素的行、列和值,以及矩阵的形状。 CSR格式则是一种更为紧凑的表示方法,它使用两个Tensor来表示稀疏矩阵。第一个Tensor存储了每一行中的非零元素在第二个Tensor中的起始位置,第二个Tensor存储了所有的非零元素,并按照行的顺序排列。通过torch.sparse_csr_tensor函数可以创建一个CSR格式的稀疏矩阵。 在使用稀疏矩阵时,可以通过torch.sparse.mm函数进行稀疏矩阵与稠密矩阵的乘法运算,该函数会根据输入的稀疏矩阵的格式自动选择最优的计算方式。另外,可以通过.to_dense方法将稀疏矩阵转换为稠密矩阵进行进一步的操作。 总之,PyTorch的torch.sparse模块提供了对稀疏矩阵的支持,可以方便地进行表示和操作。稀疏矩阵的使用可以有效减少内存消耗,并提高计算效率。 ### 回答3: 在 Torch 中,稀疏矩阵是一种特殊类型的矩阵,其中大部分元素是零。为了有效地存储和处理这些矩阵,Torch 提供了一种称为 COO(Coordinate List)格式的稀疏矩阵表达方式。 在 COO 格式中,一个稀疏矩阵可以用三个数组来表示,分别是行索引数组、列索引数组和值数组。行索引数组存储非零元素所在的行,列索引数组存储非零元素所在的列,而值数组存储对应的非零元素的值。由于只存储非零元素的位置和值,因此 COO 格式能够显著减少对存储空间的需求。 举例来说,假设我们有一个3x3的矩阵M,其中非零元素为(1, 2, 3),它们的位置分别是(0, 1, 2)对应的行和(1, 2, 0)对应的列。在 COO 格式下,矩阵 M 可以表示为以下三个数组: - 行索引数组:[0, 1, 2] - 列索引数组:[1, 2, 0] - 值数组:[1, 2, 3] 使用 Torch 提供的稀疏矩阵操作函数,可以对 COO 格式下的稀疏矩阵进行各种常见操作,如矩阵加法、乘法、转置等。同时,Torch 也支持将 COO 格式的稀疏矩阵转换为其他格式(如 CSR、CSC)进行存储和计算,以满足不同情况下的需求。 总结来说,Torch 中的稀疏矩阵可以使用 COO 格式进行表达,使用三个数组分别表示非零元素的位置和值。这种表达方式能够有效减少存储空间,并提供了丰富的稀疏矩阵操作函数,使得在处理稀疏矩阵时更加高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值