Ваш вопрос, по сути, заключается в том, как преобразовать массив в «столбец», причем столбец представляет собой двумерный массив с длиной строки 1. Это можно сделать с помощью ndarray.reshape(-1, 1)
.
Это означает, что выreshape
ваш массив должен иметь длину строки, равную единице, и пусть numpy выводит количество строк / длину столбца.
x1 = np.array(range(5))
print(x1.reshape(-1, 1))
Вывод:
array([[0],
[1],
[2],
[3],
[4]])
Вы получаете тот же вывод при изменении формы x2
и x3
.Кроме того, это также работает для n-мерных массивов:
x = np.random.rand(1, 2, 3)
print(x.reshape(-1, 1).shape)
Вывод:
(6, 1)
Наконец, единственное, чего здесь не хватает, - это сделать некоторые утверждения, чтобы гарантировать, что массивы, которые не могут быть преобразованыне конвертированы неправильно.Основная проверка, которую вы делаете, состоит в том, что число не одно целых чисел в форме меньше или равно единице.Это может быть сделано с помощью:
assert sum(i != 1 for i in x1.shape) <= 1
Эта проверка вместе с .reshape
позволяет вам применять свою логику ко всем массивам с numpy.