矩阵所有元素值累加:sum
INDArray indArray16 = Nd4j.create(new float[] {1, 2, 3, 4, 5, 6}, new int[] {2,3}); // 总和 double sum = indArray16.sum().getDouble(); System.out.println("矩阵元素累加和 : " + sum);执行结果
矩阵元素累加和 : 21.0转置操作(不改变源对象):transpose
INDArray indArray16 = Nd4j.create(new float[] {1, 2, 3, 4, 5, 6}, new int[] {2,3}); disp("转置前", indArray16); disp("转置操作", indArray16.transpose()); disp("transpose操作后的原值(不变)", indArray16);执行结果,可见2行3列转置后变成了3行2列,但是生成了新对象,而源对象未改变
转置前 维度 : 2 形状 : [2, 3] 完整矩阵 : [[ 1.0000, 2.0000, 3.0000], [ 4.0000, 5.0000, 6.0000]] ***************************************************** 转置操作 维度 : 2 形状 : [3, 2] 完整矩阵 : [[ 1.0000, 4.0000], [ 2.0000, 5.0000], [ 3.0000, 6.0000]] ***************************************************** transpose操作后的原值(不变) 维度 : 2 形状 : [2, 3] 完整矩阵 : [[ 1.0000, 2.0000, 3.0000], [ 4.0000, 5.0000, 6.0000]]转置操作(源对象被改变):transposei
INDArray indArray16 = Nd4j.create(new float[] {1, 2, 3, 4, 5, 6}, new int[] {2,3}); disp("转置前", indArray16); disp("转置操作", indArray16.transposei()); disp("transposei操作后的原值(已变)", indArray16);执行结果
转置前 维度 : 2 形状 : [2, 3] 完整矩阵 : [[ 1.0000, 2.0000, 3.0000], [ 4.0000, 5.0000, 6.0000]] ***************************************************** 转置操作 维度 : 2 形状 : [3, 2] 完整矩阵 : [[ 1.0000, 4.0000], [ 2.0000, 5.0000], [ 3.0000, 6.0000]] ***************************************************** transposei操作后的原值(已变) 维度 : 2 形状 : [3, 2] 完整矩阵 : [[ 1.0000, 4.0000], [ 2.0000, 5.0000], [ 3.0000, 6.0000]]横向拼接:hstack,要求两个矩阵行数相等
// 2行3列 INDArray indArray17 = Nd4j.create(new float[] {1, 2, 3, 4, 5, 6}, new int[] {2,3}); // 2行1列 INDArray indArray18 = Nd4j.create(new float[] {1, 2}, new int[] {2,1}); disp("源矩阵", indArray17); disp("拼接上的矩阵", indArray18); // 2行3列的矩阵,横向拼接一列后,变成了2行4列 disp("横向拼接(每一行都增加一列)", Nd4j.hstack(indArray17, indArray18));执行结果如下图,可见是把indArray18 横着拼到indArray17 的右侧
纵向拼接:vstack,要求两个矩阵列数相等
// 2行3列 INDArray indArray19 = Nd4j.create(new float[] {1, 2, 3, 4, 5, 6}, new int[] {2,3}); // 1行3列 INDArray indArray20 = Nd4j.create(new float[] {1, 2, 3}, new int[] {1,3}); disp("源矩阵", indArray17); disp("拼接上的矩阵", indArray18); // 2行3列的矩阵,纵向拼接一行,变成了3行3列 disp("纵向拼接(增加一行)", Nd4j.vstack(indArray19, indArray20));执行结果如下图,可见是把indArray20放在了indArray19的底部
以上就是矩阵操作的常用API了,希望能给您一些参考,在深度学习的开发中更熟练的操作数据
你不孤单,欣宸原创一路相伴Java系列
Spring系列
Docker系列
kubernetes系列
数据库+中间件系列
DevOps系列
欢迎关注公众号:程序员欣宸微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
https://github.com/zq2599/blog_demos