numberposts not responding to wp_reset_postdata()

@Milo’s answer worked perfectly (see comment above).

if (in_array($post->ID, $do_not_duplicate)) continue; meant that duplicate posts were still being counted in the loop, though not being displayed.

To fix, remove this line, and exclude duplicate posts from the query with this argument:
'post__not_in' => $do_not_duplicate.

Thank you @Milo for your swift and succinct response.