<div dir="ltr">Hi All,<div><br></div><div>    I have the following (very ugly) line of code:</div><div><br></div><div>all_results = np.asarray([transm_hist[date_idx, :, idx_main_set[date_idx] ]*main_flow[date_idx, 0:n_fluids] for date_idx in xrange(n_dates)])<br clear="all">
<div><br></div><div>where transm_hist.shape = (n_dates, n_fluids, n_nodes), main_flow.shape = (n_dates, n_fluids) and idx_main_set is an array containing integer indices with idx_main_set.shape = (n_dates, ) . The resulting variable all_results.shape = (n_dates, n_fluids)</div>
<div><br></div><div>Since that line of code is relatively slow if done repeatedly, I thought I'd be smart to rewrite it in Fortran and then use f2py to wrap the subroutine. So I wrote this:</div><div><br></div><div><div>
subroutine matmul(transm_hist, idx_main_set, main_flow, all_results, &</div><div>                  n_dates, n_fluids, n_nodes)</div><div><br></div><div>  implicit none</div><div><br></div><div>  integer ( kind = 4 ), intent(in) :: n_dates, n_fluids, n_nodes</div>
<div><br></div><div>  real    ( kind = 4 ), intent(in) :: transm_hist(n_dates, n_fluids, n_nodes)</div><div>  real    ( kind = 4 ), intent(in) :: main_flow(n_dates, n_fluids)</div><div>  integer ( kind = 4 ), intent(in) :: idx_main_set(n_dates)</div>
<div>  real    ( kind = 4 ), intent(out):: all_results(n_dates, n_fluids)</div><div><br></div><div>  integer (kind = 4) i, node</div><div>    </div><div>  do i = 1, n_dates</div><div>      node = int(idx_main_set(i))</div>
<div>      all_results(i, :) = transm_hist(i, 1:n_fluids, node)*main_flow(i, 1:n_fluids)</div><div>  enddo</div><div>  </div><div>end</div></div><div><br></div><div><br></div><div>Unfortunately, it appears that I am not getting out quite the same results... I know it's a bit of a stretch with so little information, but does anyone have a suggestion on where the culprit might be? Maybe the elementwise multiplication is done differently in Numpy and Fortran, or I am misunderstanding what the np.asarray is doing with the list comprehension above?</div>
<div><br></div><div>I appreciate any suggestion, which can also be related to improvement in the code. Thank you in advance.</div><div><br></div><div>Andrea.<br></div><br>"Imagination Is The Only Weapon In The War Against Reality."<br>
<a href="http://www.infinity77.net" target="_blank">http://www.infinity77.net</a><br><br></div></div>