Существует ли хороший способ дифференцироваться между строкой и векторами - столбцами в Python? До сих пор я использую numpy и scipy и что я вижу, до сих пор то, что, Если я должен был дать одному вектор, сказать
from numpy import *
Vector = array([1,2,3])
они не смогли бы сказать погоду, я имею в виду строку или вектор - столбец. Кроме того:
array([1,2,3]) == array([1,2,3]).transpose()
True
Который в "реальном мире" просто неверен. Я понимаю, что для большинства функций на векторах от упомянутых модулей не нужно дифференцирование. Например, outer(a,b)
или a.dot(b)
но я хотел бы дифференцироваться для своего собственного удобства.
Если я хочу 1x3 массив, или 3x1 массив:
import numpy as np
row_arr = np.array([1,2,3]).reshape((1,3))
col_arr = np.array([1,2,3]).reshape((3,1)))
Проверка Ваша работа:
row_arr.shape #returns (1,3)
col_arr.shape #returns (3,1)
я нашел, что много ответов здесь полезно, но слишком сложное для меня. На практике я возвращаюсь к shape
и reshape
, и код читаем: очень простой и явный.
Можно сохранить элементы массива подряд или столбец следующим образом:
>>> a = np.array([1, 2, 3])[:, None] # stores in rows
>>> a
array([[1],
[2],
[3]])
>>> b = np.array([1, 2, 3])[None, :] # stores in columns
>>> b
array([[1, 2, 3]])