Есть ли реализация разреженных массивов или эквивалентные списков в Fortran.Fortran: разреженные массивы или списки
В стадии вычисления большого набора данных мы передаем массив размером n=10000
подпрограмме, чтобы сделать что-то на них. Например, поиск похожих элементов в нем и перечисление их для каждого элемента последовательно. То есть, для первого пункта, найти все подобные элементы через список (массив) и сохранить полученные метки. Получаемый результат может быть большим как список для каждого элемента. Обратите внимание, что в отношении критериев сходство, которое мы используем, не является симметричным, что означает, что нам нужно полностью итерировать оценку для всех элементов. Следовательно, результат может быть разной длины для каждого в соответствии с используемыми критериями. Сохранение всех результатов, следовательно, требует разреженных массивов/список, который доступен в Python как:
R = an array # an array
L = [] # list initialization
for e in R: # iteration on all elements of R
r = similars(e,R,criteria) # r is array & different in size for each element
L.append(r) # store the ranks in list L
Для простоты теперь мы используем обычные массивы в Fortran, где для n<=1000
оно n*n
. Как вы видите, это очень неэффективная идея для больших размеров. Любое решение?
Здесь может быть полезен [связанный список] (http://fortranwiki.org/fortran/show/Linked+list). – Chris
fortran 77, 90, 2k3? – Anycorn
@ Anycorn F90. и GCC4.5 – Developer