2017-01-23 1 views
0

дается многомерный массив 252 × 3 массиву {Float64,2}, почему я не могу сделать что-то Python-Эск, как:Как выполнить векторное разделение в Джулии?

normalized_data = vals/vals[1,:], чтобы каждый элемент, деленной на 1-й элемент в соответствующей колонке. Это работает в Python (хотя с vals[0,:] в знаменателе). В Юли, мне пришлось использовать:

normalized_data = [(vals[:,1]/vals[1,1]) (vals[:,2]/vals[1,2]) (vals[:,3]/vals[1,3])]

Это, кажется, на самом деле ограничения и не является универсальным для работы независимо от того, сколько столбцов данных у меня есть!

ответ

9

Он может.

normalized_data = vals ./ vals[1,:] 

или даже лучше, если normalized_data уже выделено:

normalized_data .= vals ./ vals[1,:] 

(Edit: Для v0.5 или выше, он должен быть vals ./ vals[1,:].' из-за выпавших размеров См комментарии.)

не будет выделяться. Эта форма синтаксиса векторизации частично получена из MATLAB. Я бы предложил просмотреть руководство. Одно место, чтобы посмотреть, если вы только начинаете есть отличия от других языков:

http://docs.julialang.org/en/release-0.4/manual/noteworthy-differences/

Более подробную информацию о вещании и понимание того, что мы получаем, делая . явным, см пост последующий блог:

http://julialang.org/blog/2017/01/moredots

по существу, потому что . «s является явным, анализатор может сливаться выражениями и сделать его гораздо более эффективным, чем делать„Векторизованного“вычисление а-ля NumPy (или, по крайней мере, он всегда будет максимально эффективным , вместо того, чтобы иногда быть эффективным из-за магии компилятора).

+3

Помните, что 'val [1,:]' теперь превращается в 'Vector', поэтому вам нужно' vals ./ vals [1,:] ''для версий> = 0.5. – DNF

+4

Поскольку '' 'является сопряженной транспозицией, оно должно быть' vals ./ vals [1,:]. '' Вообще. – tim

+0

Извинения перед Крисом - я должен был уточнить, какую версию Джулии я использую (v 5.0). Я не пробовал, но я уверен, что его пример разделения точек работает в версиях <5,0, и поэтому он согласится с этим. Для меня DID работал с предложениями от DNF и tim. Спасибо всем! – bauhaus9

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