Funciones de escritura que aceptan matrices numpy 1-D y 2-D?

Mi comprensión es que las matrices 1-D en numpy se pueden interpretar como un vector orientado a columnas o un vector orientado a filas. Por ejemplo, una matriz 1-D con forma(8,) se puede ver como una matriz bidimensional de forma(1,8) o forma(8,1) dependiendo del contexto.

El problema que tengo es que las funciones que escribo para manipular matrices tienden a generalizarse bien en el caso de 2-D para manejar vectores y matrices, pero no tan bien en el caso de 1-D.

omo tal, mis funciones terminan haciendo algo como esto:

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

O incluso esto:

# 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 ...

Es decir, encuentro que puedo generalizar el código para manejar casos 2-D(r,1), (1,c), (r,c), pero no los casos 1-D sin ramificación o remodelación.

e vuelve aún más feo cuando la función opera en múltiples matrices como comprobaría y convertiría cada argumento.

Así que mi pregunta es: ¿me estoy perdiendo un idioma mejor? ¿El patrón que describí anteriormente es común al código numpy?

También, como una cuestión relacionada con los principios de diseño de API, si la persona que llama pasa una matriz 1-D a alguna función que devuelve una nueva matriz, y el valor de retorno también es un vector, ¿es una práctica común remodelar un vector 2-D? @(r,1) o(1,c) volver a una matriz 1-D o simplemente documentar que la función devuelve una matriz 2-D independientemente?

Gracia