Недавно я переключился с Matlab/Octave на SciPy/NumPy, и мне это нравится. Но я обнаружил, что иногда меня путают из-за тонких различий.В NumPy, np.array ([1, 2, 3, 4, 5]) отличается от np.array ([[1], [2], [3], [4], [5]])?
В Matlab, когда мы объявить «вектор-строку» размером 5, то мы используем следующую команду:
x = [1, 2, 3 ,4, 5] % in matlab
Величина этого вектора может быть проверена с помощью команды «size
», как показано ниже, :
size(x)
ans =
1 5
Я предположил, что следующее в NumPy делает то же, что и выше.
x = np.array([1, 2, 3, 4, 5]) # in NumPy
Но размер несколько странный.
>>> np.shape(x)
(5,)
Размер не (5, 1)
, но это (5,)
. Что это значит? Я не совсем уверен, почему второй элемент этого кортежа пуст.
Я проверил, что следующие возвращает (5, 1)
y = np.array([[1], [2], [3], [4], [5]])
np.shape(y)
(5, 1)
Тогда это "у" такой же, как "х" в NumPy? Я предполагаю, что это не так. Возможно, я что-то недопонимаю, но мог ли кто-нибудь просветить меня по этой теме?
Спасибо!
В MATLAB матрица имеет по крайней мере два измерения (лет назад это было ровно 2). В numpy массив может иметь любое число - 0, 1, 2 и т. Д. Еще одна существенная разница - размеры массива MATLAB 'в конце, следовательно, форма '(5,1)'. numpy добавляет их в начале - при необходимости. – hpaulj
Спасибо за комментарий! Но я думаю, что неверно, что размер массива MATLAB «прокладки» в конце. Как вы упомянули, в Matlab матрица имеет 2-мерную размерность, а вектор считается специальным типом матриц с размерностью N x 1 или 1 X N. Таким образом, размер вектора строки становится [1, N ]. Если это вектор-столбец, размер становится [N, 1]. – chanwcom
Если я попрошу измерение «10-го», у меня нет проблем с опросом меня «1':' size (1: 10,10) '. – hpaulj