我目前在Python中有一个6D numpy数组,其中前4个索引指定需要哪个2D矩阵。我可以使用f2py将其传递到Fortran90,然后使用以下方法访问2D矩阵:
subroutine mySubroutine(myArray)
real(8), dimension(:,:,:,:,:,:) :: myArray
matrix = myArray(a,b,c,d,:,:)
然而,矩阵通常可以是不同的大小。我发现的唯一方法是使最后两个维度等于最大可能的大小,在左上角存储较小的矩阵,并使用以下方法获得较小的矩阵:
matrix = myArray(a,b,c,d,1:matrixSize,1:matrixSize)
问题是它的内存效率非常低,因为我存储的是阵列中从未使用过的大量空部分。在Python中,我可以通过制作大小正确的2D numpy数组列表来解决这个问题,但我不确定如何使用f2py将它们传递给Fortran,或者这是否可行。任何想法都将不胜感激。谢谢
当然,你认为避免留下大量空白空间是正确的——这肯定不会很好地扩展
传递一个完全平坦的数组,以及每个矩阵的形状如何?然后你可以在另一端重建它?因为有2D矩阵,所以每个矩阵的形状可以由两个整数定义。然后,只要对展平阵列进行标准化排序,就可以轻松地在另一侧重建它们
例如,如果您有两个矩阵,一个大小为10x10,一个大小为100x100,您可以传入:
相关问题 更多 >
编程相关推荐