Как получить ранее неизвестный массив как вывод функции в Фортране
Впитон:
def select(x):
y = []
for e in x:
if e!=0:
y.append(e)
return y
это работает как:
x = [1,0,2,0,0,3] select(x) [1,2,3]
быть переведенным наФортран:
function select(x,n) result(y)
implicit none
integer:: x(n),n,i,j,y(?)
j = 0
do i=1,n
if (x(i)/=0) then
j = j+1
y(j) = x(i)
endif
enddo
end function
Вопросы на Фортране:
как объявить у (?)?как объявить предопределенные значения для хкак избежать размерной информации nза 1, если он определен каку (п) вывод будет:
x = (/1,0,2,0,0,3/) print *,select(x,6) 1,2,3,0,0,0
что не желательно!
! -------------------------------
Комментарии:
1- Все приведенные ответы полезны в этом посте. Специально М.С.Б и эриксун.
2- Я пытался адаптировать идеи для моей проблемы и компилировать сF2Py
Однако это не было успешным. Я уже отлаживал их с помощью GFortran, и все они были успешными. Это может быть ошибка вF2Py
или что-то, чего я не знаю об использовании этого должным образом. Я постараюсь осветить этот вопрос в другом посте.
Обновить: Связанный вопрос можно найти наВот.