Escrever funções que aceitam matrizes numpy 2D e 2

Meu entendimento é que matrizes 1-D em numpy podem ser interpretadas como um vetor orientado a colunas ou um vetor orientado a linhas. Por exemplo, uma matriz 1-D com a forma(8,) pode ser visto como uma matriz 2D de forma(1,8) ou forma(8,1) dependendo do contexto.

O problema que estou tendo é que as funções que escrevo para manipular matrizes tendem a generalizar bem no caso 2-D para lidar com vetores e matrizes, mas não tão bem no caso 1-

Como tal, minhas funções acabam fazendo algo parecido com isto:

if arr.ndim == 1:
    # Do it this way
else:
    # Do it that way

Ou mesmo isso:

# Reshape the 1-D array to a 2-D array
if arr.ndim == 1:
    arr = arr.reshape((1, arr.shape[0]))

# ... Do it the 2-D way ...

Isso é, eu acho que posso generalizar código para lidar com casos 2-D(r,1), (1,c), (r,c), mas não os casos 1-D sem ramificação ou remodelage

Fica ainda mais feio quando a função opera em várias matrizes, como eu verificaria e converteria cada argument

Então, minha pergunta é: estou perdendo algum idioma melhor? O padrão descrito acima é comum ao código numpy?

Also, como uma questão relacionada aos princípios de design da API, se o chamador passa uma matriz 1-D para alguma função que retorna uma nova matriz e o valor de retorno também é um vetor, é prática comum remodelar um vetor 2-D(r,1) ou(1,c) retornar a uma matriz 1-D ou simplesmente documentar que a função retorna uma matriz 2-D independentement

Obrigad

questionAnswers(4)

yourAnswerToTheQuestion