Olá, Fábio. Cara, a resposta para sua pergunta é: depende.
A PEP-8, a guia "pythonica" de estilo de código, recomenda fazer as importações sempre no cabeçalho do código, como uma boa prática. Mas isso é somente uma recomendação de estilo, não precisa ser seguida à risca porque pode trazer variações de desempenho em seu código, mínimas, microssegundos ou segundos, mas pode.
Se seu módulo for um módulo muito pesado, carregar o módulo no cabeçalho aumentará um pouco o tempo de desempenho do início do programa (os microssegundos ou segundos que falei acima).
Realizar a importação dentro das funções fará com que, obviamente, a importação só aconteça quando o método for chamado, o que traria essa micro lentidão somente no momento de chamada do método.
Você pode ficar em dúvida se fazendo a importação dentro da função o módulo numpy ficará sendo importado a cada chamada nova da função, e isso não acontece. A importação só acontece uma vez e depois da chamada, o módulo é mantido num registro interno do Python, agilizando o desempenho de seu código.
Então, a sua resposta é essa. Como boa prática, seguindo a PEP-8, importações devem ocorrer no cabeçalho. Mas se você quiser ganhar desempenho no início do programa, pode importar o módulo dentro das funções e essa pequena diminuição de desempenho, caso seja uma lib muito grande, só ocorrerá na primeira chamada da função. Entretanto, se seu código é muito dependente da lib importada, se você precisa de muitos métodos da lib, acredito que o ideal seria importar já no cabeçalho.
Por fim, em casos de libs menores nem deve fazer diferença importar dentro ou fora de funções, então nesse caso eu seguiria a PEP-8.