LINUX.ORG.RU

сделать reshape матрице за один раз


0

1

Можно ли преобразовать X как показано ниже, выполнив один раз оператор reshape? Нужно первый array, возвращаемый mgrid, вытянуть в один столбец, и со вторым проделать тоже, получив в результате матрицу из двух столбцов.

>>> X=mgrid[0:3,0:3]
>>> X
array([[[0, 0, 0],
        [1, 1, 1],
        [2, 2, 2]],

       [[0, 1, 2],
        [0, 1, 2],
        [0, 1, 2]]])

>>> X=c_[ X[0].reshape(-1,1), X[1].reshape(-1,) ]
>>> X
array([[0, 0],
       [0, 1],
       [0, 2],
       [1, 0],
       [1, 1],
       [1, 2],
       [2, 0],
       [2, 1],
       [2, 2]])




Последнее исправление: dmitry-d67 (всего исправлений: 1)

Писать на Си?

invy ★★★★★
()

пиши на octave и не парься.

dikiy ★★☆☆☆
()

В гугле забанили? Язык какой?

Если фортран, то есть стандартная процедура. Питон - Numpy, Си - man указатели.

Zodd ★★★★★
()
Ответ на: комментарий от Zodd

Все это же все равно хранится в виде одной строки. Разница лишь в доступе по элементам.

Zodd ★★★★★
()
octave:61> a=cell(1,2)
a = 
{
  [1,1] = [](0x0)
  [1,2] = [](0x0)
}
octave:62> [a{:}]=meshgrid (1:3,1:3)
a = 
{
  [1,1] =

     1   2   3
     1   2   3
     1   2   3

  [1,2] =

     1   1   1
     2   2   2
     3   3   3

}
octave:63> horzcat(a{1}(:),a{2}(:))
ans =

   1   1
   1   2
   1   3
   2   1
   2   2
   2   3
   3   1
   3   2
   3   3

octave:64> 
dikiy ★★☆☆☆
()
Ответ на: комментарий от AIv

думал что reshape() может за раз решить проблему. Но, в этой ситуации похоже минимум два раза нужно вытягивать в строку или столбец одно из измерений.

Кстати, нашел спец. оператор

ravel(X[0]), ravel(X[1])

dmitry-d67
() автор топика

Тред не читал, но предвижу «заново написанную, неспецифицированную, глючную и медленную реализацию половины языка APL».

buddhist ★★★★★
()
Ответ на: комментарий от dmitry-d67

А почему именно за раз? Джаст фор фан что ли? Чем два раза то не устраивают?;-)

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.