Почему транспонирование не меняет массив? - PullRequest
1 голос
/ 26 октября 2019
y = np.array([1, 1, 0, 0])
print("Y 1:", y)
y = y.T

print("Y 2:", y)

Оба печатают одинаково:

[1,1,0,0]

Форма массива a = [1,1,0,0] равна [4,], а b= [[1,1,0,0]] равна [1,4]. Могу ли я сказать, что a - это вектор, а b - это матрица. Таким образом, операция транспонирования не работает для вектора, поэтому два отпечатка совпадают.

Ответы [ 2 ]

2 голосов
/ 26 октября 2019

Как видно из документации здесь , транспонирование одномерного массива возвращает неизменное представление исходного массива. В вашем случае y - это одномерный массив, поэтому транспонированный вывод будет неизменным.

1 голос
/ 26 октября 2019

numpy отличает 1d "векторы" от 2d "векторов строк" и "векторов столбцов". для переключения между ними обычно используется что-то вроде:

# create 1d vector
v = np.array([1, 1, 0, 0])

# row vector
rv = v[np.newaxis, :]

# column vector
cv = v[:, np.newaxis]

обратите внимание, что np.newaxis определено как None, поэтому вы часто будете видеть это в виде, например, v[:,None] и поскольку необходимость в векторе-столбце является такой распространенной операцией, существуют неясные сокращения, такие как np.c_[v]

, теперь, когда rv и cv равны 2d, они могут быть транспонированный , как вы ожидали,

переключение обратно на 1d вектор аналогично:

# from row vector
v = rv[0, :]

# from column vector
v = cv[:, 0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...