Почему numpy.loadtxt возвращает скаляр numpy.ndarray, если файл имеет длину в одну строку? - PullRequest
0 голосов
/ 17 января 2019

Я использую функцию np.loadtxt() и в зависимости от размера считываемого ввода выполняю определенные операции. Функция возвращает объект numpy.ndarray определенной формы и длины. Например, для случаев 1 и 2 возвращается то, что я ожидал.

ДЕЛО 1:

Файл:

1
2

Выход:

returns: [1 2]
type: <class 'numpy.ndarray'>
shape: (2,)
length: 2

СЛУЧАЙ 2:

Файл: пусто

Выход:

returns: []
type: <class 'numpy.ndarray'>
shape: (0,)
length: 0

Однако, как и в случае 3, если в файле есть единственное значение, возвращаемое значение больше не является numpy.ndarray объектом формы (1,), как в предыдущих случаях, а вместо этого numpy.ndarray объектом со скаляром значение и форма (), что делает проверку формы действительно неудобной.

СЛУЧАЙ 3:

Файл:

1

Выход:

returns: 1                      # and not [1]
type: <class 'numpy.ndarray'>   # type remains the same which makes checking awkward
shape: ()
length:                         # producing error
Traceback (...)

Почему возвращается array(1) с формой () вместо array([1]) с формой (1,)? Есть ли в этом преимущество?

Чтобы было ясно, я знаю, что могу проверить () и преобразовать такие скаляры в массивы скаляров, но мне любопытно, почему это было выбранное поведение и есть ли более чистое решение для этого?

...