numpy добавить измерение в массив - PullRequest
1 голос
/ 03 мая 2020

Я получаю python объект, который имеет размерность (10,). Я хочу изменить его на массив с формой (10, 1).

Например:

x = np.random.normal(size=(10, 3))
x = x[:, 0]
x.shape
# which is (10, )

y = np.random.normal(size=(10, 1))
y.shape
# which is (10, 1)

z = x + y
z.shape
# which is (10, 10)

Как я могу выполнить sh это? Кроме того, почему вышеупомянутая переменная z получает (10, 10) форму?

Ответы [ 3 ]

2 голосов
/ 03 мая 2020

Чтобы изменить форму, вы можете добавить этот фрагмент кода -

np.reshape(x, (10,1))

, который изменит размер x до (10,1) и вернет его

0 голосов
/ 03 мая 2020

Вам не нужно использовать numpy.array

x = x[:, 0] равно x = np.array(x[:, 0])


вы можете указать, что вам нужен дополнительный измерение, и вы не отказываетесь от явной индексации первого столбца:

x = np.random.normal(size=(10, 3))
x = x[:, 0, None]
x.shape
#(10, 1) 

Или вы можете использовать его при суммировании

x = np.random.normal(size=(10, 3))
y = np.random.normal(size=(10, 1))
#x[:, 0, None] + y
x = x[:, 0]
x[:, None] + y

Мы также можем указать, что мы хотим все до второго столбец, этот синтаксис короче, но, возможно, он более читабелен 0, чем :1

x = np.random.normal(size=(10, 3))
x = x[:, :1]
x.shape
#(10, 1) 

, мы также можем использовать дополнительные методы.

np.expand_dims

x = np.random.normal(size=(10, 3))
x = np.expand_dims(x[:, 0], 1)
x.shape
#(10, 1)

np.reshape

x = np.random.normal(size=(10, 3))
x = x[:, 0].reshape(-1, 1)
x.shape
#(10, 1)

Здесь -1 позволяет работать с другим числом строк, отличным от 10

0 голосов
/ 03 мая 2020
import numpy as np

x = np.random.normal(size=(10, 3))
x = np.array(x[:, 0])
x = np.reshape(x, (10, 1))  # this line added
x.shape
# which is (10, )

y = np.random.normal(size=(10, 1))
y.shape
# which is (10, 1)

z = x + y
z.shape
# which is (10, 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...