#python #arrays #numpy #matplotlib
#python #массивы #numpy #matplotlib
Вопрос:
У меня есть некоторый код здесь:
import numpy as np
import matplotlib.pyplot as plt
#height (cm)
X = np.array([[147, 150, 153, 158, 163, 165, 168, 170, 173, 175, 178, 180, 183]])
print(X.T)
print("=======================")
print(X)
Кто-нибудь может объяснить мне, что означает T и различия между X и X.T?
Комментарии:
1. Xt — это транспонирование матрицы.
Ответ №1:
Это .T
атрибут numpy array, который транспонирует массив.
Ответ №2:
Существенные различия видны в атрибутах shape
and strides
:
In [64]: X = np.array([[1,2,3,4]])
In [65]: X
Out[65]: array([[1, 2, 3, 4]])
In [66]: X.T
Out[66]:
array([[1],
[2],
[3],
[4]])
In [67]: X.shape
Out[67]: (1, 4)
In [68]: X.T.shape
Out[68]: (4, 1)
In [69]: X.strides
Out[69]: (32, 8)
In [70]: X.T.strides
Out[70]: (8, 32)
Комментарии:
1. Итак, каков вывод?
2. Я не думаю, что должны быть «выводы». Все остальные просто называют это транспонированием. Но мои цифры показывают, что на самом деле происходит в
numpy
— он делает aview
с разной формой и шагами.
Ответ №3:
.T
Атрибут возвращает транспонирование массива. Обратите внимание, что в вашем случае вы объявили почти вектор (реальный вектор был бы одномерным, но в вашем случае у вас есть два измерения из-за использования двойных скобок [[]]
в определении x):
import numpy as np
x = np.array([[147, 150, 153, 158, 163, 165, 168, 170, 173, 175, 178, 180]])
print("Line vector:")
print(x)
print("Column vector:")
print(x.T)
Line vector:
[[147 150 153 158 163 165 168 170 173 175 178 180]]
Column vector:
[[147]
[150]
[153]
[158]
[163]
[165]
[168]
[170]
[173]
[175]
[178]
[180]]
Обратите внимание, что в этом случае нет необходимости использовать двойные квадратные скобки [[]]
. Если вы определяете x
с помощью одиночных скобок, транспонирование не отличается (потому что нет измерения для транспонирования):
import numpy as np
x = np.array([147, 150, 153, 158, 163, 165, 168, 170, 173, 175, 178, 180])
print("Line vector:")
print(x)
print("Column vector:")
print(x.T)
Line vector:
[147 150 153 158 163 165 168 170 173 175 178 180]
Column vector:
[147 150 153 158 163 165 168 170 173 175 178 180]