2017-01-29 21 views
0

Учитывая это 2D numpy массив:Сохраняя последовательный порядок Numpy 2D массивов

a=numpy.array([[31,22,43],[44,55,6],[17,68,19],[12,11,18],...,[99,98,97]]) 

учитывая необходимость сгладить его с помощью numpy.ravel:

b=numpy.ravel(a) 

и учитывая необходимость позже сбросить его в pandas dataframe, Как я могу убедиться, что последовательный порядок значений в a сохраняется при применении numpy.ravel? например, Как я могу проверить/убедиться, что numpy.ravel не испортил первоначальный последовательный заказ?

Разумеется, предполагаемый результат должен состоять в том, что числа, следующие до и после 17 в b, например, такие же, как в a.

+1

Что вы подразумеваете под 'maintining последовательный порядок значений'? Не могли бы вы использовать меньший образец и показать нам ожидаемый o/p? Вы имеете в виду 'a.ravel ('F')'? – Divakar

+0

Ну, я, конечно, использовал фальшивые значения, чтобы сделать дело. Предполагаемый результат состоит в том, что после выравнивания 'a' значения до и после' 17' остаются такими же, как в 'a'. – FaCoffee

+0

Что до '17' в' a'? Это первое значение в строке. Перед ним 44, или 6? Вы должны сделать некоторые продвинутые вещи, такие как транспонирование или странное индексирование, чтобы изменить раскованный порядок. – hpaulj

ответ

1

Прежде всего, вам нужно сформулировать, что означает «последовательный» порядок, так как numpy.ravel() действительно сохраняет порядок. Вот совет, как сформулировать то, что вам нужно: попробовать с простейшими например игрушечным:

import numpy as np 
X = np.arange(20).reshape(-1,4) 

X 
#array([[ 0, 1, 2, 3], 
# [ 4, 5, 6, 7], 
# [ 8, 9, 10, 11], 
# [12, 13, 14, 15], 
# [16, 17, 18, 19]]) 
X.ravel() 
# array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
#  13, 14, 15, 16, 17, 18, 19]) 

ли это соответствовать вашим ожиданиям? Или вы хотите видеть этот заказ:

Z = X.T 
Z 
# array([[ 0, 4, 8, 12, 16], 
#  [ 1, 5, 9, 13, 17], 
#  [ 2, 6, 10, 14, 18], 
#  [ 3, 7, 11, 15, 19]]) 
Z.ravel() 
# array([ 0, 4, 8, 12, 16, 1, 5, 9, 13, 17, 2, 6, 10, 
#   14, 18, 3, 7, 11, 15, 19])