2015-07-28 2 views
0

Я унаследовал кусок кода и, будучи неофитом, не понимаю его тонкости. Он форматирование 2x1 массивов генерироваться должны быть переданы в качестве linesegments для matplotlib.LineCollectРеабилитация и штабелирование массивов

   coar[t] = na[j] 
      coart = coar.reshape(-1,1,2) 
      segments = np.hstack([coart[:-1],coart[1:]]) 

Пожалуйста, исправьте мою терминологию: Он принимает итерации массив 1х2 па и помещая их в «COAR» «массив массивов»

coar 
    [[51 50] 
    [52 50] 
    [52 49] 
    [52 48]] <type 'numpy.ndarray'> 

Как аргументы в изменении формы (-1,1,2) представляют собой «массив внутри массива в массиве»?

coart: 
    [[[51 50]] 

    [[52 50]] 

    [[52 49]] 

    [[52 48]]] <type 'numpy.ndarray'> 

И, наконец, hstack делает пары точек, которые будут отображаться как сегменты линии с помощью LineCollect. Кажется, что он занимает столбец -1 с [: -1]? индекс отрицательной колонки? Я не понимаю, как это все работает

[[[51 50] 
     [52 50]] 

    [[52 50] 
     [52 49]] 

    [[52 49] 
     [52 48]]] <type 'numpy.ndarray'> 

Что происходит ... Любого просветления на этих функциях, форматирования и типы данных были бы фантастическими

ответ

0

Поскольку вы неофит вероятно, было бы полезно отметить, что у python отличная документация. Во-первых, документацию np.resape можно найти здесь: http://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html , но, чтобы дать вам полную информацию: A -1 в случае функции reshape указывает numpy на вывод этого измерения по длине этого измерения. Таким образом, в этом случае, если вы проверите форму нотариусов после RESHAPE вы найдете:

coart.shape 
    #output: (4,1,2) 

Для следующей части вы запутались индексация и есть отличная документация об индексации здесь: http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html , но, чтобы добраться до суть его, -1 интерпретируется python как n + i, где n - длина массива, а i - отрицательное число. Так что в вашем случае -1 действительно означает 3. Кроме того, поскольку питон использует индексацию на основе 0 они не считать последний номер так:

 coart[:-1] 
    #output [[[51,50],[52,50],[52,49]]] 

в вашем случае означает взять массив из элемента 0 до 2 (так как конечный число, которое равно 3 не входит)

coart[1:] 

означает, начиная от элемента 1 и собирается до конца (так что не включают в себя элемент 0).

Так как вы можете видеть, что горизонтальная укладка говорит о том, что она ставит строку 0 поверх строки 1 и строки 1 поверх строки 2 и строки 2 сверху строки 3.

Смежные вопросы