путать с документом numpy.c_ и примером кода

Я много раз читал документ о numpy.c_, но все еще смущен. Говорят – «Переводит объекты среза в конкатенацию вдоль второй оси». в следующем документе. Может ли кто-нибудь уточнить в приведенном ниже примере, что такое объекты среза, и что такое 2-я ось? Я вижу, что они все одно измерение и смущены, когда идет вторая ось.

Использование Python 2.7 в Windows.

http://docs.scipy.org/doc/numpy-1.6.0/reference/generated/numpy.c_.html#numpy.c_

>>> np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])] array([[1, 2, 3, 0, 0, 4, 5, 6]]) 

One Solution collect form web for “путать с документом numpy.c_ и примером кода”

np.c_ – еще один способ выполнения конкатенации массива

 In [701]: np.c_[np.array([[1,2,3]]), 0, 0, np.array([[4,5,6]])] Out[701]: array([[1, 2, 3, 0, 0, 4, 5, 6]]) In [702]: np.concatenate([np.array([[1,2,3]]), [[0]], [[0]], np.array([[4,5,6]])], axis=1) Out[702]: array([[1, 2, 3, 0, 0, 4, 5, 6]]) 

Форма вывода равна (1,8) в обоих случаях; конкатенация была на оси = 1, 2-й оси.

c_ позаботился о расширении размеров 0 до np.array([[0]]) , 2d (1,1), необходимых для конкатенации.

np.c_np.r_ ) на самом деле является объектом класса с методом __getitem__ , поэтому он работает с синтаксисом [] . numpy/lib/index_tricks.py файлом numpy/lib/index_tricks.py является поучительное чтение.

Обратите внимание, что версия row работает с синтаксисом: slice, создавая массив 1d (8) (одинаковые числа, но в 1d)

 In [706]: np.r_[1:4,0,0,4:7] Out[706]: array([1, 2, 3, 0, 0, 4, 5, 6]) In [708]: np.concatenate((np.arange(4),[0],[0],np.arange(4,7))) Out[708]: array([0, 1, 2, 3, 0, 0, 4, 5, 6]) In [710]: np.hstack((np.arange(4),0,0,np.arange(4,7))) Out[710]: array([0, 1, 2, 3, 0, 0, 4, 5, 6]) 

np.c_ – это удобство, но не то, что вам необходимо понять. Я думаю, что возможность работать с concatenate напрямую более полезна. Это заставляет вас четко думать о размерах входных данных.

[[1,2,3]] – фактически список – список, содержащий один список. np.array([[1,2,3]]) – это 2d-массив с формой (1,3). np.arange(1,4) создает массив (3) с одинаковыми номерами. np.arange(1,4)[None,:] делает его массивом (1,3).

slice(1,4) – объект среза. np.r_ и np.c_ могут превращать объект среза в массив – фактически используя np.arange .

 In [713]: slice(1,4) Out[713]: slice(1, 4, None) In [714]: np.r_[slice(1,4)] Out[714]: array([1, 2, 3]) In [715]: np.c_[slice(1,4)] # (3,1) array Out[715]: array([[1], [2], [3]]) In [716]: np.c_[1:4] # equivalent with the : notation Out[716]: array([[1], [2], [3]]) 

И вернуться к исходному примеру (что может быть не самым лучшим):

 In [722]: np.c_[[np.r_[1:4]],0,0,[np.r_[4:7]]] Out[722]: array([[1, 2, 3, 0, 0, 4, 5, 6]]) 

==========

 In [731]: np.c_[np.ones((5,3)),np.random.randn(5,10)].shape Out[731]: (5, 13) 

Для np.c_ первое измерение обоих должно совпадать.

В примере learn n_samples – это 1-й тусклый X (строк), а randn также должен иметь столько строк.

 n_samples, n_features = X.shape X = np.c_[X, random_state.randn(n_samples, 200 * n_features)] 

np.concatenate([(X, randn(n_samples...)], axis=1) должен работать так же хорошо здесь. Немного словнее, но функционально то же самое.

  • проверить os.path.isfile (имя файла) с учетом регистра в python
  • Как конвертировать в OpenERP из одной таблицы счетов в другую?
  • Как распечатать из сценария Python 2.7, вызывается из Bash в PyCharm?
  • Как установить пакет xgboost в python (платформа Windows)?
  • Я правильно установил код?
  • Параллельные запросы в Appengine Python
  • Сервер сокетов для широковещания в python
  • Есть ли эквивалент в Python из Fortran «неявный none»?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.