Вопросы с тегами [numpy]

-2

голосов
3

ответ
25

Просмотры

Удалить элементы из массива Numpy меньше, чем 1

Я пытаюсь построить (50 миллионов значений) большие объемы данных, но я получаю MemoryError. Теперь я пытаюсь очистить свой набор данных из избыточных значений. В моем случае, все эти значения ниже 1 и выше -1. Одна вещь, чтобы иметь в виду, что сюжет должен выглядеть так же, как оригинал, но без шума. Есть ли лучший способ сделать это, чем с помощью петли или списковых? Оригинальный сюжет: Изменить: Спасибо за ответы. Если я использую предлагаемый подход: датый = датый [(- 1> DATY) | (Датый> 1)] Это приводит к следующим образом:
1

голосов
1

ответ
428

Просмотры

питон как заполнить 2D массив со значениями счетчика

Я инициализируется 2D-массив (235, 451) с использованием сетки = np.zeros ((235451)) Фрагмент массива: а = массив (счетчик ({(87, 177): 347, (72, 191): 335, (88, 178): 318, (68, 188): 318, (67, 188): 318, (67, 187): 314}), DTYPE = объект) Я хочу, чтобы заполнить следующие индексы с прилавка ценности и оставить все остальные значения без значения как ноль. например >>> сетки [0,0] = 0 >>> сетка [87177] = 347 >>> сетка [72191] = 335 Моя общая цель будет тогда контур этого над картой. Спасибо.
jdiction
1

голосов
1

ответ
53

Просмотры

Pandas Dataframe add missing timestamp row and then forward fill previous values

714791 2018-11-11 16: 22: +22,299974400 К -15,897694 84,714799 2018-11-11 16: 22: +22,400025600 G -15,89764 84,714794 2018-11-11 16: 22: +22,400025600 К -15,897622 84,714632 2018-11-11 16: 22: +22,400025600 Y -15,897692 84,714804 2018-11-11 16: 22: +22,400025600 Вт -15,897623 84,714635 2018-11-11 16: 22: +22,499990400 Y -15,897692 84,714806 2018-11-11 16: 22: +22,499990400 Вт -15,897694 84,714802 2018 -11-11 16: 22: +22,499990400 G -15,897641 84,714795 2018-11-11 16: 22: +22,499990400 K -15,897694 84,714808 Если вы заметили, у меня есть 4-х игроков: G, W, K, Y. Поэтому должно быть 4 каждый индекс временной метки. Тем не менее, некоторые Timestamps отсутствуют. Как я могу добавить все недостающие временные метки, а затем вперед заполнить другие значения, чтобы получить только те игроки, которые не находятся в данной временной метки? Например, для временной метки 2018-11-11 16:22:22. 099958400, Игрок G отсутствует. Как я могу заполнить только для этого игрока? Желаемая выход (я разнесены рамку, чтобы сделать его более удобным для чтения): Отметка игрока повернутого Lat повернутого Lon 2018-11-11 16: 22: +21,999993600 G -15,89769 84,714795 2018-11-11 16: 22: +21,999993600 W -15.897637 84.714784 2018 года -11-11 16: 22: +21,999993600 К -15,897617 84,714621 2018-11-11 16: 22: +21,999993600 Y -15,897638 84,714787 2018-11-11 16: 22: +22,099958400 К -15,897618 84,714623 2018-11-11 16:22: +22,099958400 Y -15,897691 84,714796 2018-11-11 16: 22: +22,099958400 Вт -15,897619 84,714626 2018-11-11 16: 22: +22,099958400 G -15,89769 84,714795 2018-11-11 16: 22: +22,200009600 Y -15,897693 84,714794 2018-11 -11 16: 22: +22,200009600 G -15,897639 84,714788 2018-11-11 16: 22: +22,200009600 К -15,897693 84,714802 2018-11-11 16:22:22.
bbd108
1

голосов
1

ответ
43

Просмотры

Подсчет вхождений элементов одного массива в другой массив

Я хочу найти частоту элементов данного одномерного массива Numpy (arr1) в другой одномерный массив Numpy (arr2). Arr1 массив содержит элементы без каких-либо повторений. Кроме того, все элементы в arr1 являются частью множества уникальных элементов arr2 Рассмотрим это в качестве примера, arr1 = np.array ([1,2,6]) arr2 = np.array ([2, 3, 6, 1 , 2, 1, 2, 0, 2, 0]) в настоящее время я использую следующие: частота = np.zeros (LEN (arr1)) для г в диапазоне (LEN (arr1)): знак = np.where (arr2 == arr1 [я]) частота [я] = Len (знак [0]) печать частота >> [2, 4, 1] Указанный метод дает мне правильный ответ. Но я хочу знать, если есть лучший / более эффективный метод, чем тот, что я ниже.
Siddharth Satpathy
1

голосов
3

ответ
50

Просмотры

Откиньте на Numpy массив вдоль нового измерения, используя значения в качестве индекса

У меня есть [м, м] Numpy массив с элементом в {0, 1, 2, ..., 24}, теперь я хочу отделить каждое число в третьем измерении, чтобы получить [м, м, 24] массива. простой пример, [5,5] массив с элементом в {0, 1, 2, 3} [0 0 1 0 0 2 0 3 0 1 0 2 3 1 0 0 0 1 0 0 1 0 0 2 1] Теперь Мне нужно получить `[5,5,3]` массив [[1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1] [0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0] [0 0 0 0 0 0 0 3 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0]] В настоящее время я простой метод, но это очень дорого вычислительный. Потому что мне нужно сделать эту операцию часто. IMG = np.expand_dims (IMG, ось = 2) для I в диапазоне (24): img_norm [..., я] = (IMG [..., 0] == (I + np.ones (форма = IMG [..., 0] .shape))) Для 64 массива с размером [224,224] и элемент в {0, 1, 2, ..., 24}, код выше занимает около 5 секунд.
Lee David
1

голосов
1

ответ
52

Просмотры

Using Numba's @jit causing math inconsistencies with Numpy's float32 being used in Python

При использовании @jit Numba с типом данных float32 Numpy, я клоню? Усечение? проблемы. Это в значительной степени шума, так как это далеко мимо знаков после запятой я забочусь о - около 7-го или 8-е место - но это все равно будет хорошо знать, что происходит, и если я могу исправить это. Я должен использовать тип float32 данных для экономии памяти, как в стороне! Вот код, я использую в качестве теста: импорт NumPy в нп от test_numba импорта test_numba np.random.seed (Семя = 1774); число = 150; inArray = np.round (np.float32 ((np.random.rand (число) - 5) * 2), 4.); #set вверх float32 с 4 знаков после запятой numbaGet = test_numba (inArray); #run через печать ( "Получить: \ т" ул (numbaGet +) + "Тип:" ул (тип + (numbaGet))); печать ( "Вы хотите: \ т" ул (np.mean + (inArray)) + "Тип:" ул (тип + (np.mean (inArray)))); #compare к ожидаемому в сочетании со следующей функцией импорта NumPy как нп от Numba импорта JIT #, float32 @jit (nopython = True) # nopython = True, nogil = True, параллельный = True, кэш = True, nogil = True, параллельно = Правда # float32 (float32), Защита test_numba (inArray): #outArray = np.float32 (np.mean (inArray)); #forcing float32 не изменило его outArray = np.mean (inArray); вернуться outArray; Выход из этого: Получить: 0,0982406809926033 Тип: Want: 0,09824067 Тип: И что, кажется, указывает на Numba делает его класс Python поплавка (float64, насколько я понимаю) и делать математику, а потом как-то потери точности. Если я переключаюсь на float64 разницу значительно минимизированы. Получить: +0,09824066666666667 Тип: Want: +0,09824066666666668 Тип: Не уверен, что я делаю неправильно с этим. Опять же, в моем случае это»
user2403531
1

голосов
1

ответ
28

Просмотры

Найти единый индекс, соответствующий dataframe строки 2 колонки условными

У меня есть dataframe с 3 столбцами и мне нужно, чтобы получить индекс строки, которые соответствуют значениям с 2-мя колоннами. Например, ниже dataframe: Имя Город Страна Pietro Roma Италия Maria Милан Италия Pietro NY USA В этом случае, мне нужно, чтобы получить индекс Pietro | Roma | Италия, seaching для имени и только те столбцы города. Я пытался делать код, приведенным ниже, но он возвращает все строки, который соответствует 2 столбцов. IDX = np.where (dataframe [dataframe [ "Name"] == 'Pietro'], dataframe [dataframe [ "Город"] == 'Roma']) Но она возвращает массив индексов [[0,2], [0]], и мне нужно, чтобы вернуть индекс 0, что где у меня есть имя = 'Pietro' и City = 'Roma' Обновлены решение решение: dataframe.index [(dataframe [ "Name"] == 'Pietro' ) & (dataframe [ "Город"] == 'Рома'
Alan Gularte
1

голосов
1

ответ
51

Просмотры

Поймать Numpy ComplexWarning как исключение

Рассмотрим следующий пример: >>> импортировать NumPy, как пр >>> а = np.array ([1,0, 2.1j]) >>> б = np.array (а, DTYPE = np.float64) / Пользователи / goerz / anaconda3 / бен / IPython: 1: ComplexWarning: Кастинг комплексных значений для реального выброса мнимой части # / Users / goerz / anaconda3 / bin / питона Как я могу поймать ComplexWarning как исключение? Я попытался np.seterr, но это не имеет никакого эффекта (как это относится только к плавающему предупреждению точек, такие как недостаточному / перелив). Я также попытался с warnings.catch_warnings (): менеджер контекста из стандартной библиотеки, но это также не имеет никакого эффекта.
Michael Goerz
1

голосов
5

ответ
65

Просмотры

mathematical formula in python doesnt work

Я изучаю машинное обучение в Python и настоящее время им изучать основы. Im в настоящее время изучает линейную регрессию и пытается реализовать некоторые математические формулы в Python коду. Я успел написать несколько формул успешно, но есть в этом один им с трудом с: (X - Xmeans) * (Y - Ymeans) Это всегда дает мне ошибку «индексы списка должны быть целыми или дольками, а не numpy.float64 "когда я пытаюсь напечатать. Я попытался посмотреть на тех же случаях и их решения в Интернете, но ни один из них не работал. импорта NumPy импорта matplotlib.pyplot, как рх X_positions = numpy.array ([2,3,4,5,6]) y_positions = numpy.array ([4,5,6,5,7]) plt.plot ([X_positions ], [y_positions], 'ро') plt.axis ([0,10,0,10]) X_means = сумма (X_positions) / LEN (X_positions) y_means = сумма (y_positions) / LEN (y_positions) plt.plot ( [X_means], [y_means],
some_wild_one
9

голосов
2

ответ
175

Просмотры

Вложенные Numpy массивы в DASK и панд dataframes

Общий случай использования в машине / глубоких обучение код, который работает на изображения и звуке, чтобы загружать и манипулировать большие наборы данных изображений или звуковых сегментов. Почти всегда, записи в этих наборах данных представлены изображения / аудио сегмента и метаданные (например, этикетки класса, обучение / тест, например, и т.д.). Например, в моем конкретном случае использования распознавания речи, наборы данных почти всегда состоит из записей с такими свойствами, как: ID Speaker Тестовые данные (строка) транскрипт (строка) (BOOL) данных Wav (NumPy массив) имя Dataset (строка). .. что такое рекомендуемый способ представления такого набора данных в пандах и / или DASK - акцент на данной Wav (в наборе данных изображения, это будет данные изображений сам)? В панде, с несколькими трюками, можно гнездом NumPy массива внутри колонны, но это не сериализации хорошо, а также не будет работать с DASK. Кажется, это очень распространенный вариант использования, но я не могу найти соответствующие рекомендации. Можно также сериализации / десериализации эти массивы в двоичном формате (petastorm Uber в делает что-то вроде этого), но это, кажется, упускают суть библиотек, таких как DASK и панд, где Automagic сериализации является одним из основных преимуществ. Любые практические замечания или предложения для различных методологий приветствуются.
Stav
1

голосов
0

ответ
36

Просмотры

Vectorize пятикратно цикла в NumPy, с нетривиальной индексацией

У меня есть ряд вложенных для петель, которые используются для заполнения массива ранга 3 следующим образом: S = ... # некоторого число N = ... # Некоторых другое число an_array = np.zeros ((S, N * N, N * N)) для S в диапазоне (S): для I в диапазоне (N): для в диапазоне (N): для J в диапазоне (N): для Ь в диапазоне (N): an_array [S, я * N + A, J * N + Ь] = цель [s, I, A, J, Ь] Это эквивалентно тому, что индексы в базовой N для правых двух измерений массива, где индексируется элемент массива а an_array [S, Ia, ДБ], за исключением того, что индексы преобразуются в базе 10 для работы с NumPy. мишень представляет собой NumPy массив ранга 5, но в целом может быть любая операция между Numpy массивов, индексированных по любой комбинации индексов (например, х [с, я, а] - у [с, у, Ь]). Как я могу заполнить массив в векторизованной моде, не прибегая к для петель? Спасибо
Daniele Grattarola
1

голосов
1

ответ
64

Просмотры

Currently Animating Scatter Plot With Static Frames. Is there a way to animate over a moving window instead?

У меня есть массив массивов с форматом [2000] [200,3], что я создаю анимированный график рассеяния. 2000 количество кадров, а внутренние массивы имеют формат [длину, [х, у, Интно]], которые являются точками разбрасывать. Таким образом, для примера один кадр будет выглядеть следующим образом: Array [0] = np.array ([x_1, y_1, I_1], [x_2, y_2, I_2], ..., [x_200, y_200, I_200]) Таким образом, мы есть 2000 кадров 200 точек каждый. Эти точки произвольно усечены все 200 и на самом деле являются последовательными. Так что я могу посильно изменить массив в: Array = np.array (np.array ([x_1, y_1, I_1], [x_2, y_2, I_2], ..., [x_400000, y_400000, I_400000]), который не проблема для меня. Я знаю, как это сделать. Мой вопрос заключается в том, как можно анимировать график рассеяния, который адаптивно перемещается через точку вместо отображения 200 точек бункеров? Приведенный ниже код позволяет мне построить анимированный график рассеяния с кадрами (1- 200,201-400, 401-600, и т.д.), но результат не очень гладко к глазу. В идеале я хотел бы что-то, что обновляет в каждой точке или, по крайней мере, каждые 10 очков, так, например, кадров (1-200,2-201,3-202 и т.д.) или (1-200,11-210,21-200 и т.д. ) numframes = Len (массив) plt.ion () рис, ах = plt.subplots () норма = plt.Normalize (Массив [:] [:, 2] .min (), Array [:] [:, 2] .max ()) подкожно = ax.scatter (Array [0] [:, 0], массив [0] [:, 1], с = Array [0] [:, 2], CMAP = cm.hot, с = 5) plt.xlim (-40,40) plt.ylim (0200) plt.draw () для г в диапазоне (numframes): sc.set_offsets (np.c_ [Массив [I] [:, 0], массив [I] [:, 1]]) sc.set_array (Массив [I] [:, 2]) для печати (я) plt.pause (0.1) plt.ioff () plt.show ()
Ian Campbell Moore
1

голосов
0

ответ
640

Просмотры

Applying a specific High pass filter on a RGB image in numpy

Я пытаюсь preproccess моего изображения перед подачей его на CNN. Цель Чтобы извлечь остаточную после применения фильтра верхних частот (ссылка 1) на RGB изображении размеров 512x512 (в основном форма (512,512, 3)), используя следующее уравнение: ссылку на изображение, где есть образ и матрица фильтр верхних частот. Сначала я подумал о подходе к проблеме, используя подход, определенный в этом вопросе здесь. Но они использовали черно-белое изображение. Гипотеза: Отделить изображение в различных каналах, а затем применить фильтр к каналу перед объединением их снова. Как вы думаете, что это правильный путь решения проблемы или есть лучший подход? И как бы я идти об этом в Python? Справка: 1) Глубокое изучение для стегоанализа через сверточных нейронных сетей 2) Модель камеры идентификации с использованием Deep CNN»
Pradyumna Rahul
1

голосов
0

ответ
304

Просмотры

потеря Tensorflow NaN во время тренировки

Я сделал нейронную сеть, которая в основном копия учебника на сайте tensorflow (https://www.tensorflow.org/tutorials/layers). Единственное отличие состоит в том, что моя нейронной сеть представляет собой 3D-ко сеть и не 2D ко чистые. У меня было много ошибок в отношении моих данных, и я не уверен, также ли это одна ошибка из моих данных. NanLossDuringTrainingError: потеря NaN во время тренировки. Перед тем, что ошибка появляется tensorflow распечатывает вероятности того, что имеет значение только 1: вероятности = [[1] [1] [1] ... [1]...] Она заканчивается с небольшим уведомлением об ошибке: ОШИБКА: tensorflow : Модель расходились с потерей = NaN. Я сделал суть GitHub для вас, чтобы взглянуть на код и сообщение об ошибке. https://gist.github.com/hjkhjk1999/df11c401578f4da83214fba16c210e45 Я также предоставляет ссылку идентификации контента в данных я использую. Мои данные дали мне так много ошибок, что кто-то должен взглянуть на него. https://www.dropbox.com/s/iwnvnu57yktdf8f/Preprocessed%20Data.rar?dl=0
Simon Zeng
1

голосов
0

ответ
34

Просмотры

краткое определение переменной Multi-экспоненциальной функции (ы) внутри цикла (или в классе)

я пытаюсь определить вызываемую функцию сумм из-экспонента с переменным числом членов, в конденсированной коде. концепция я ищу должна быть применима к любой математической функции с повторяющимися условиями. отдельные функции должны выглядеть следующим образом: от Numpy импорта ехра нулей Защиты ExpDec1 (х, y0, t0, A, a1, тау): у = нули (Len (х)) для к, л в Перечислять (х): если л> = t0: у [к] = (А / а1) * (а1 * ехр (-l / тау) возвращают у защиту ExpDec2 (х, у0, t0, А, а1, а2, tau1, TAU2): у = нули (LEN (х)) для к, л в Перечислим (х): если л> = t0: у [к] = (А / (A1 + A2)) * (а1 * ехр (-l / tau1) + а2 * ехр (-l / TAU2)) возвращение у ... некоторый поиск направил меня использовать классы, но я не очень хорошо знаком с классами моего класса попытка выглядит следующим образом:. класс ExpDec (объект): от Numpy импорта ехра, 1101) 2 #Y = ExpDec.ExpDec () ----> 2 у = ExpDec.ExpDec (п = 1, х = х, у0 = 0, t0 = 0, А = 1, а = 1, тау = 15 ) 3 4 печати (у) TypeError: ExpDec () получила неожиданный аргумент ключевого слова «п» любой помощи будет оценен по достоинству! благодарю вас.
Jamhawi
1

голосов
0

ответ
26

Просмотры

Pandas - Writing a Change Log Between Multiple Dataframes

Я пытаюсь придумать наиболее эффективный способ записи журнала изменений для больших dataframes. У меня есть тысячи dataframes, которые имеют одного миллиона строк и 20 колонок, так что эффективность имеет первостепенное значение. У меня есть несколько решений для проверки различий между двумя dataframes, но я не могу понять, лучший способ войти изменений. Алгоритм Скелет: Load df1 и df2 в память. Инициализировать DF3 как df1 - это базовая линия (первая дату с базой данных) Сравнить df1 и df2 с помощью df1.ne (df2) Написать клетки с изменениями в DF3 (слияние некоторого вида ... совмещенный и LAMDA опс и ДФ? перестройка?) Установите df1 = df2 Loop к следующему файлу и загрузить новую df2 для сравнения Петля до конца Написать DF3 в новый файл (XLSX, CSV и т.д.) Я считаю, что я застрял на шагах 3 и 4. Я полагаю, что мне нужно, чтобы объединить замаскированную dataframe к DF3 dataframe, а затем делать какие-то операции конкатенации строк. Кто-нибудь есть какие-нибудь идеи? Я попытался ниже внутри цикла, чтобы изменить DF1 и df2, но получен неверный результат: импорт панд как PD импорта NumPy, как нп df1 = pd.DataFrame ({ «Col1»: [ «синего», 2, 3, 4] , 'Стлб2': [90, 99, 3, 97], 'Col3': [11, 12, 13, 14]}) df2 = pd.DataFrame ({ 'Стлб1': [ 'синего', 2, 6] , 'Стлб2': [90, 99, 99], 'Col3': [11, 12, 13]}) DF3 = df1 маска = df2.ne (DF1) # это где начинается беда ... DF3 перезаписывается так журнал только для этого одного сравнения ... #How я сливаться данные в DF3 так, что DF3 имеет строку из DF3 и дополнения от df2.ne (df1) DF3 = (df3.astype (ул) [маска] + изменено на: '+ df2.astype (STR) [маска]).
Tyler Russell
1

голосов
0

ответ
61

Просмотры

Отличаются между целым числом и поплавка в массиве

У меня есть задание, где я передал массив с числами, целыми числами, поплавками и, возможно, строками. Затем я должен определить, какие из элементов содержится в другом массиве целых чисел с чистыми и которые не являются. Те, которые не содержатся в массиве с целыми числами, должны быть напечатаны, и пользователь должен изменить элемент на значение, которое содержится в массиве с целыми числами. Хотя у меня есть проблема, что если элемент в элементе в данном массиве является плавающей точкой, то выход из пользовательского ввода также становится плавающей точкой, (если входной сигнал не является значением из массива с целыми числами.) Та же проблема возникает также если элемент в данном массиве представляет собой целое число, и ввод пользователя с плавающей точкой. Затем поплавок округляется до целого числа. Можно ли дать какие-либо советы, как я должен изменить этот код, так что скрипт работает безупречно? классы = нп. формат (классы [I])) попробовать: классы [я] = поплавок (вход ( «Вставить новый класс:»)), за исключением ValueError: передать Вам, вероятно, комментарий „поплавок (входу ())“, но это как-то помогло моему сценарию , Хотя я не знаю, если есть и другие возможности. При выполнении кода и ввод случайных входов, я получаю следующие результаты - 10,5 не является допустимым класс. Класс должен быть целым числом. Вставьте новый сорт: 10,7 10,7 не является допустимым класса. Класс должен быть целым числом. Вставьте новый сорт: 10 Сорт был изменен на 10. 8 не в масштабе семь классов. Вставьте новый сорт: 7,5 Сорт был изменен до 7. 5 не в масштабе семь классов. Вставьте новый сорт: 5,5-не в масштабе семи классов. Вставьте новый класс: строка 5 не в масштабе семь классов.
Edin Mahmutovic
1

голосов
1

ответ
1k

Просмотры

Как сохранить свой собственный объект класса в hdf5?

Я создал класс провести результаты эксперимента из моих исследований (я студент EE PhD) как класс Trial: Защита __init __ (я, Subid, triID): self.filePath = «» # путь к файлу в папке self.subID = -1 # INT self.triID = -1 # INT self.data_A = -1 # NumPy массив self.data_B = -1 # NumPy массив ...... Это сочетание многих BOOLS, междунар и Numpy массивов. Вы получаете идею. Я читал, что это быстрее при загрузке, если данные в формате hdf5. Могу ли я сделать это с моими данными, который представляет собой список питон моего объекта Trial? Обратите внимание, что аналогичный вопрос на StackOverflow. Но у нее есть только один ответ, который не отвечает на вопрос. Вместо этого, он ломает OP в пользовательский класс в основные типы данных и хранить их в отдельные наборы данных. Я не против делать это,
Chris
10

голосов
5

ответ
5.3k

Просмотры

Найдите строки индексы нескольких значений в массиве Numpy

присоединять (IDX) печати (результат) Я нашел ответ на подобный вопрос, но он работает только для 1d массивов. Есть ли способ сделать то, что я хочу в более простой способ?
Octoplus
1

голосов
1

ответ
74

Просмотры

Минимизация функции многих переменных

импорт математика импорт NumPy импорт SciPy Защита chisq1a (а, б, Н.Н.): возвращение (NN / (а ** 2) * б ** 2 * (1 + 3 / (а ** 2)) * (1+ (математика .tan ((math.pi) / 2 * (а + б * Math.log (б / 0,45)))) ** 2)) х0 = numpy.array ([0,0,0]) из scipy.optimize импорт минимизировать результат = scipy.optimize.minimize (chisq1a, х0) Я пытаюсь минимизировать многомерные функции в Python 3, используя код выше, но я получаю ошибку, TypeError: chisq1a () отсутствует 2 необходимые позиционные аргументы: «B» и «NN» Что это значит? Эта ошибка возникла раньше в контексте того, впоследствии написал функцию, первоначально определенный с п аргументов, как один с, например, п-1 аргументов, так что существует несоответствие, но это не кажется, проблема здесь. Вероятно, решение очень простое, но я только начал с питоном несколько дней назад, так что все еще учусь :) Спасибо!
CAF
1

голосов
1

ответ
255

Просмотры

Изменение размера изображений пиксельных массивов с подушкой

Я работаю через один из медиа-книг O'Reilly под названием «Программирование Computer Vision с Python», в которой один из упражнений заключается в использовании PCA на множестве изображений с целью отображать «означает» образ и первые семь режимов; направления с большей вариацией. Выполнение кода должны дать восемь изображений в одном окне фигуры. Я скопировал свой код непосредственно, и я использую свой собственный набор из 55 изображений (рукописных буквы «а») каждые 900 х 1200 в размерности. Проблема в том, что размеры матрицы изображения в результате уплощения изображения представляет собой (1 х 3240000). #create матрицы для хранения всех приглаженных изображений immatrix = массива ([массив (Image.open (им)). расплющить () для им в imlist], «F») Я почесал голова немного, пока я не понял, что это просто 900 х 1200 х 3 для трех цветовых каналов. Тем не менее, пример кода в книге ничего не говорит об этом, а просто пытается изменить размер (1 х 3240000) массив в 900 х 1200 изображения, которое NumPy, конечно, жаловаться. # Показать некоторые изображения (средние и 7 режимов) первых цифры () серый цвет () подзаговор (2,4,1) imshow (immean.reshape (т, п)) # выпуска, массив является 3240000, из-за цветовые каналы # 3 , м = 900 и п = 1200 для г в диапазоне (7): подзаговоре (2, 4, г + 2) imshow (V [I] .reshape (т, п)) шоу () Если кто имеет опыт работы с этим или может помочь, это было бы замечательно. Как примечание, я начал работать с подушкой около 2 часов назад, поэтому конкретные примеры для исправления будут более полезными, чем общий концептуальный ответ. Большое спасибо! Я включил полный код ниже. от PIL импорта изображения из Numpy импорта * из pylab импорта * импорт PCA импорт зева imlist = [os.path.join ( "imlist", е) для е в os.listdir ( "imlist"), если f.endswith (». Png «)] = им массив (Image.open (imlist [0])) #open одно изображение, чтобы получить размер M, N = im.shape [0: 2] #get размер изображений, который составляет 900 х 1200 imnbr = Len (imlist) #get количества изображений для печати (imnbr) #create матрицы хранить все изображения уплощенной immatrix = массив ([массив (Image.open (им)). сплющить () для им в imlist], «F «) V, S, immean = pca.pca (immatrix) (V, S, immean) # показать некоторые изображения (средних и 7 первых мод) Рисунок () серый () подзаговор (2,4,1) imshow (immean. изменения формы (т, п)) # выпуск, массив 3240000, из-за 3 цветовых каналов. м = 900 и п = 1200 для г в диапазоне (7): подзаговоре (2, 4, г + 2) imshow (V [I] .reshape (т, п)) показывают () присоединиться ( "imlist", е) для е в os.listdir ( "imlist"), если f.endswith ( 'Png')] IM = массив (Image.open (imlist [0])) #open одно изображение, чтобы получить размер т, п = im.shape [0: 2] #get размер изображений, который является 900 х 1200 imnbr = Len (imlist) #get количества изображений для печати (imnbr) #create матрицы хранить все уплощенными изображения immatrix = массив ([массив (Image.open (им)). сплющить () для им в imlist], 'е') V, S, immean = pca.pca (immatrix) (V, S, immean) # шоу некоторые изображения (средний и 7 первых режимы) рисунок () серый цвет () подзаговор (2,4,1) imshow (immean.reshape (т, п)) # выпуска, массив 3240000, из-за 3 цветовых каналов. м = 900 и п = 1200 для г в диапазоне (7): подзаговоре (2, 4, г + 2) imshow (V [I] .reshape (т, п)) показывают () присоединиться ( "imlist", е) для е в os.listdir ( "imlist"), если f.endswith ( 'Png')] IM = массив (Image.open (imlist [0])) #open одно изображение, чтобы получить размер т, п = im.shape [0: 2] #get размер изображений, который является 900 х 1200 imnbr = Len (imlist) #get количества изображений для печати (imnbr) #create матрицы хранить все уплощенными изображения immatrix = массив ([массив (Image.open (им)). сплющить () для им в imlist], 'е') V, S, immean = pca.pca (immatrix) (V, S, immean) # шоу некоторые изображения (средний и 7 первых режимы) рисунок () серый цвет () подзаговор (2,4,1) imshow (immean.reshape (т, п)) # выпуска, массив 3240000, из-за 3 цветовых каналов. м = 900 и п = 1200 для г в диапазоне (7): подзаговоре (2, 4, г + 2) imshow (V [I] .reshape (т, п)) показывают () открытый (imlist [0])) #open одно изображение, чтобы получить размер м, п = im.shape [0: 2] #get размер изображений, который является 900 х 1200 imnbr = Len (imlist) #get номер из распечатки изображений (imnbr) #create матрицы хранить все изображения уплощенной immatrix = массив ([массив (Image.open (им)). сплющить () для им в imlist], 'е') V, S, immean = PCA .pca (immatrix) (V, S, immean) # показать некоторые изображения (средних и 7 первых мод) Рисунок () серый цвета () подзаговора (2,4,1) imshow (immean.reshape (M, N)) # выпуск , массив 3240000, из-за 3 цветовых каналов. м = 900 и п = 1200 для г в диапазоне (7): подзаговоре (2, 4, г + 2) imshow (V [I] .reshape (т, п)) показывают () открытый (imlist [0])) #open одно изображение, чтобы получить размер м, п = im.shape [0: 2] #get размер изображений, который является 900 х 1200 imnbr = Len (imlist) #get номер из распечатки изображений (imnbr) #create матрицы хранить все изображения уплощенной immatrix = массив ([массив (Image.open (им)). сплющить () для им в imlist], 'е') V, S, immean = PCA .pca (immatrix) (V, S, immean) # показать некоторые изображения (средних и 7 первых мод) Рисунок () серый цвета () подзаговора (2,4,1) imshow (immean.reshape (M, N)) # выпуск , массив 3240000, из-за 3 цветовых каналов. м = 900 и п = 1200 для г в диапазоне (7): подзаговоре (2, 4, г + 2) imshow (V [I] .reshape (т, п)) показывают () который является 900 x 1200 imnbr = Len (imlist) #get количества изображений для печати (imnbr) #create матрицы хранить все изображения уплощенной immatrix = массив ([массив (Image.open (им)). сплющить () для им в imlist], 'е') V, S, immean = pca.pca (immatrix) (V, S, immean) # показать некоторые изображения (средние и 7 первых режимы) рисунок () серый () подзаговор (2,4, 1) imshow (immean.reshape (т, п)) # выпуск, массив 3240000, из-за 3 цветовых каналов. м = 900 и п = 1200 для г в диапазоне (7): подзаговоре (2, 4, г + 2) imshow (V [I] .reshape (т, п)) показывают () который является 900 x 1200 imnbr = Len (imlist) #get количества изображений для печати (imnbr) #create матрицы хранить все изображения уплощенной immatrix = массив ([массив (Image.open (им)). сплющить () для им в imlist], 'е') V, S, immean = pca.pca (immatrix) (V, S, immean) # показать некоторые изображения (средние и 7 первых режимы) рисунок () серый () подзаговор (2,4, 1) imshow (immean.reshape (т, п)) # выпуск, массив 3240000, из-за 3 цветовых каналов. м = 900 и п = 1200 для г в диапазоне (7): подзаговоре (2, 4, г + 2) imshow (V [I] .reshape (т, п)) показывают ()
benjamin.g
1

голосов
1

ответ
126

Просмотры

tensorflow: тензор для ndarray преобразования не работает - python3.x

Я работаю на Tensorflow CNN модели и изменен в соответствии с моим сценарием. Ранее же код работал хорошо на MNIST наборе данных, но теперь, после кормления своих собственного набора данных заполнителя y_true для этикеток является причиной проблемы. Фрагмент кода: х = tf.placeholder ( "поплавок", форма = [88, 128]) y_true = tf.placeholder ( "поплавок", форма = [Нет, 3]) y_true в сессии получает мне ошибку. Фрагмент кода: sess.run (поезда, feed_dict = {х: batch_x, y_true: batch_y, hold_prob: 0,5}) Ошибка: Ошибка типа: Значение питания не может быть объектом tf.Tensor. Допустимые значения подачи включают Python скаляры, строки, списки, Numpy ndarrays или TensorHandles. Я отливаю его Numpy массива через у = np.array (y_true) и отлажен заявление в соответствии с у, но опять ошибки: Ошибка типа: unhashable типа: «» numpy.ndarray Пробовал y_true. Eval (сессия = my_sess), как предложено здесь, на StackOverflow, но снова ошибка: InvalidArgumentError: Вы должны кормить значение для шаблонного тензора «Placeholder_4» с DTYPE поплавок и формой Любой идеей [3,?]? Что случилось здесь и как бросить / преобразовать его в подходящий формат. Дополнительная информация: batch_x = партия 50 изображений (всего 200K), 88x128 одного канала batch_y = этикетки (строка) той же партии, что и выше
MIftikharK
1

голосов
0

ответ
117

Просмотры

Обновление массива изображения пакетного на месте при использовании joblib

Это дополнительный вопрос для моего решения на следующий вопрос: Как применить функцию параллельно с несколькими изображениями в Numpy массива? Мое предложенное решение работает хорошо, если функция process_image () должен возвращать результат, а затем мы можем кэшировать, что в какой-то список для последующей обработки. Так как я хочу, чтобы сделать этот тип предварительной обработки для более 100K изображений (с формой массива (100000, 32, 32, 3)), я хочу, чтобы мое решение было очень эффективным. Но, мой список, основанный подход боры на много памяти и, таким образом, он также будет неэффективным (для дальнейшей обработки). Итак, я хочу, чтобы массив, который будет обновляться в месте внутри функции process_image (), когда эта функция вызывается несколько раз с помощью joblib. Но, у меня проблемы с обновлением исходного массива дозируемых изображений на месте. Я попробовал предложение Эрик, но он не может обновить исходный массив на месте. Я проверил ли память массива действительно разделяется между рабочими процессами, печатая флаги массива внутри функции process_image. Вот мой код для этого: импорта NumPy в нп от skimage воздействия импорта из joblib импорта Параллели, задержанного # количество процессов nprocs = 10 # порционных массив изображений img_arr = np.random.randint (0, 255, (1000, 32, . 32, 3)) astype (np.float32) # для проверки img_arr_copy = img_arr.copy () # функции, которые должны применяться на всех изображениях (параллельно) # примечание: эта функция не может обновить исходный массив на месте, но # Я хочу на месте Updation из исходного массива с результатом `equalize_hist` Защита process_image (IMG, IDX):«»» обновить исходный массив на месте, так как все рабочие процессы разделяют оригинальную память! то есть они не делают копию при обработке его. "" "Печать ( "\ п обработки изображений:", IDX) IMG [...] = exposure.equalize_hist (IMG) печать ( "метаданные массива: \ п", img.flags) печать (" ===== ================== \ п ") # запустить` process_image () `параллельно параллельно (n_jobs = nprocs) (задержка (process_image) (img_arr [IDX], IDX) для IDX в диапазоне (img_arr.shape [0])) Я даже попытался инициализировать пустой массив, используя np.empty () в том же форме, как исходный массив изображений и дозируемых попытался обновить его, но это также не удались. Я не знаю, где это происходит не так, для проверки того, произошло Updation в массив или нет, я использовал:. np.all (result_arr == img_arr) где result_arr был инициализирован, как: result_arr = пр. пустой (img_arr.shape, DTYPE = np.float32) Где я буду неправильно и что это ошибка в моем коде? Все предложения будут высоко оценены !! Печать статистика из выше коды проверить, разделяет ли память или нет: обработки изображений: 914 метаданных массива: C_CONTIGUOUS: True F_CONTIGUOUS: Ложные OWNDATA: FALSE #
kmario23
1

голосов
1

ответ
64

Просмотры

Эффективная альтернатива np.piecewise в Tensorflow

Я в настоящее время в процессе портирования моего NumPy кода на Tensorflow, для эффективного применения к нейронным сетям. В то время как Tensorflow охватывает некоторые из основных функций NumPy, она, очевидно, не обеспечивает полный охват. Сейчас я немного застрял, пытаясь перевести красивую функцию numpy.piecewise к Tensorflow. Цель состоит в том, чтобы проверить, является ли каждый элемент входной матрицы (тензора?) Превысит заданные границы, если определенный шаг будет добавлен, а если да, то для изменения прилагаемого элемента в маске матрицы одного и того же размера. Это, как функция выглядит в NumPy: Защита bounds_check (входы, маска, шаг, граница): conds = [np.absolute (вход + шаг)> границы, np.absolute (входы + шаг)
anna-earwen
1

голосов
2

ответ
201

Просмотры

Как обрабатывать член отступы в C структуры при чтении cffi.buffer с numpy.frombuffer?

Я должен прочитать массив структур C, возвращенных из DLL и преобразовать его в массив Numpy. Код использует модуль cffi Питона. Код работает до сих пор, но я не знаю, как обращаться с отступы члена в структуры, которые np.frombuffer сетует: ValueError: Размер буфера должен быть кратен элемента размера Это мой код: от cffi импорта FFI импорта NumPy, как НП з = «»»ЬурейеЙ структуры {Int А; ИНТ б; плавать с; двойной д; } MyStruct; ''»= FFI FFI () ffi.cdef (ов) разреш = [] #create массив и заполнить фиктивными данными для к в диапазоне (2): т = ffi.new ( "MyStruct *") ма = K = Мб к + 1 тс = к + 2,0 мкр = к + 3,0 res.append (м [0]) m_arr = ffi.new ( "MyStruct []", разреш) печати (m_arr) # DTYPE для структурированного массива в Numpy DT = [ ( 'а', 'I4'), ( 'B', 'i4'), ( 'с', 'f4'), ( 'd', 'f8')] размер # член, 20 байт печати ( 'размер, вручную', 4 + 4 + 4 + 8) # общий размер структуры, 24 байт печати ( 'SizeOf', ffi.sizeof (m_arr [0])) #reason является членом обивка в ЬиЕ = структуры ffi.buffer (m_arr) печати (BUF) х = np.frombuffer (ЬиЕ, DTYPE = дт) печать (х) Любые идеи, как справиться с этим в чистом виде? Edit: Это похоже на работу, если добавить дополнительный номер к DTYPE, где заполнение должно произойти: дт = [( «а», «i4»), ( «б», «i4»), ( «с» 'f4'), ( 'подушка', 'f4'), ( 'd', 'f8')] Почему отступы там происходят? (Win7, 64-разрядный, Python 3.4 64-бит). Но это не может быть лучшим способом.
Joe
1

голосов
2

ответ
201

Просмотры

Преобразование входной строки в Numpy среза

Я беру Numpy кусочек в качестве входных данных и хочу знать, что NumPy преобразует это в. Например, если пользовательский ввод строка user_input = '[1:10, 2: 20: 2], и у меня обр массив, я мог бы использовать Eval ( «обр» + user_input), чтобы получить в результате фрагмент из массив. Но то, что я ищу, а не что-то ближе к ломтик (1,10,1), ломтик (2,20,2) или любой другой NumPy преобразует что в перед выполнением фактической индексации. Может ли это быть доступны в любом случае? Как получить промежуточный этап интерпретации среза Numpy, но не фактический выход массива? Или где я могу посмотреть, как NumPy интерпретирует его индексацию?
Ethan K.
0

голосов
1

ответ
14

Просмотры

Как найти позицию столбца для первого совпадения

У меня есть dataframe, который имеет 500K строк и 200 столбцов. Мне нужно найти индекс первого нуля в столбце каждой строки. Если бы я не мог найти какой-либо нуль в ряде, я должен видеть, как 999. Спасибо за вашу помощь любезной. Это мой пример: а = { 'А': [1,2,5,7,0,9], 'B': [6,5,0,0,7,2], 'C': [0 , 8, np.nan, 10,0,6], 'D': [np.nan, 9,5,2,6,7], 'E': [1,4,6,3,3,6 ]} aidx = [ 'ID_1', 'ID_2', 'id_3', 'id_4', 'id_5', 'id_6'] DF = pd.DataFrame (а, индекс = aidx) защиту get_col (DF, Num): df_num = DF == Num df_num = df_num [df_num.any (ось = 1)]. idxmax (ось = 1) возвращение (df_num) df_new = pd.DataFrame (get_col (DF, 0)) = df_need pd.DataFrame ([2999 , 1,1,0,999], индекс = aidx)
patronlargibi
1

голосов
1

ответ
198

Просмотры

EOFError использованием numpy.load ()

У меня есть команда, чтобы загрузить данные из файла NPY: utable = numpy.load ( «utable.npy») Но это приводит к EOFError: Файл «/home/divyat/anaconda2/lib/python2.7/site-packages/numpy /lib/npyio.py», строка 419, в нагрузки pickle_kwargs = pickle_kwargs) Файл "/home/divyat/anaconda2/lib/python2.7/site-packages/numpy/lib/format.py", строка 640, в read_array массив = pickle.load (∥f∥p, ** pickle_kwargs) EOFError Я не понимаю эту ошибку. Что именно происходит? Метод numpy.load () вызывает функцию pickle.load (), который вызывает ошибку. Файл utable.npy представляет собой файл, используемый для создания текстовых вложений с помощью skipthoughts. Я скачал файлы отсюда: https://github.com/ryankiros/skip-thoughts#getting-started
Divyat
1

голосов
0

ответ
181

Просмотры

Панды векторизовать статистический тест-коэффициенты отношения

Я ищу более быстрый способ, чтобы сделать ОШ тесты на большом наборе данных. У меня есть около 1200 переменных (см var_col) Я хочу, чтобы проверить друг против друга для взаимного исключения / совместного появления. Тест отношения шансов определяются как (а * D) / (б * с)), где а, Ьсом, д является числом образцов с (а) изменено ни в одном месте х & у (б) изменено в месте х, а не в у (с) изменяется по у, а не в х (г) изменен в обоих. Я хотел бы также, чтобы вычислить точный критерий Фишера для определения статистической значимости. SciPy функция fisher_exact может вычислить оба из них (см ниже). # Вот пример моего оригинального dataframe sample_id_no var_col 0 258,0 1 -24,0 2 -150,0 3 149,0 4 108,0 5 -126,0 6 -83,0 7 2,0 8 9 -177,0 -171,0 10 -7,0 11 -377. p-значение = fisher_exact (pd.crosstab (sample_table [alpha_site]> 0, sample_table [beta_site]> 0)) возвращение ([отношение шансов, p-значение]) Этот код работает очень медленно, особенно при использовании на больших наборах данных. В моем фактическом наборе данных, у меня есть около 700k переменных пар. Так как функция getOddsRatio () применяется к каждой паре индивидуально, это, безусловно, основным источником медлительности. Есть ли более эффективное решение?
XyledMonkey
1

голосов
1

ответ
70

Просмотры

Передача данных между объектами Python и Numpy массивы?

Я работаю с изображениями, и я работаю со списком объектов класса я написал, Pixel (х, у). Я часто приходится выполнять операции, как это - std_dev = np.array (карта (лямбда х: x.std_dev, пикселей)) # обработка NumPy на std_dev ---> new_property для I, P в Перечислим (пикселей): р. new_property = new_property [я] Что является наиболее эффективным способом «переместить» эти данные между объектами Python и NumPy? Я хочу, чтобы класс Pixel, так как я бы это нужно для более мелкозернистой обработки на участках изображения. Обновление # 1 Да, пикселы список объектов Pixel. Я хочу, чтобы применить гауссово сглаживание на стандартное отклонение карты изображений. Каждое изображение пиксель в изображении имеет значение стандартного отклонения, связанное с ним.
martianwars
1

голосов
1

ответ
30

Просмотры

относительно выборки двумерного массива, и пусть массив выборки имеет три измерения формы

Есть два числовых массивов, train_wiggle и train_spike. Оба из которых имеют форму, как (1000,101). Физически они представляют соответственно 1000 точек, где каждая точка имеет 101 функции. Я хотел бы генерировать два соответствующих случайных выборок, wiggle_sample и spike_sample от train_wiggle и train_spike соответственно. Размер выборки 10. В конкретных, я хочу wiggle_sample и spike_sample имеют форму (10,101,1). Это то, что я Защита generate_train_samples (): sample_id = np.random.randint (низкий = 0, высокий = 999, размер = 10) input_seq = np.take (train_wiggle, sample_id, ось = 0) output_seq = np.take ( train_spike, sample_id, ось = 0) возвращение input_seq, output_seq # в форме: (batch_size, time_steps, feature_dim) х, у = generate_train_samples () при вызове функции выше, х и у имеют форму (10, 101), вместо того, (10,101,1), как я хочу.
user288609
1

голосов
0

ответ
123

Просмотры

Есть ли способ векторизации linalg.expm

Для того, чтобы следить за этим вопросом я новичок в Python и я пытаюсь вычислить экспоненту Матрицей продукта - Скалярное с помощью векторизации (если это возможно), что я сделал: п = 10 = t_ np.arange (1, п + 1) * 5 * np.pi / п a_11, a_12, a_21, a_22 = 0,1, -1, -1 x_0, v_0 = 1,1 А = np.array ([[a_11, a_12], [a_21, a_22] ]) А_ = np.array ([А для к в диапазоне (1, N + 1,1)]) x_0 = np.array ([[x_0], [v_0]]) # сборка x_0 печати A X_ = SciPy. linalg.expm (т _ [:, None, None] * A [None,:,:]) * X_0 я получаю следующее сообщение об ошибке в пределах linalg.expm: ValueError: ожидается, квадратная матрица Любая помощь очень ценится.
PerelMan
1

голосов
1

ответ
264

Просмотры

Ускорение индексации фантазии с NumPy

У меня есть два Numpy массива и каждый из них имеет форму (10000,10000). Одним из них является массивом значения, а другой является индекс массива. Значение = np.random.rand (10000,10000) Index = np.random.randint (0,1000, (10000,10000)) Я хочу, чтобы сделать список (или 1D Numpy массив) путем суммирования всех "массив Value" со ссылкой на «Индекс массива». Например, для каждого индекса I, находя соответствие индекса массива и давая ему значение массива в качестве аргумента для г в диапазоне (1000): NewArray [I] = np.sum (значение [np.where (Индекс == я)]) Однако, это слишком медленно, так что я должен сделать эту петлю через 300000 массивов. Я пытался придумать какой-то логический метод индексации, как NewArray [Index] + = значение [Индекс] Но это не сработало. Следующая вещь, которую я пытался использует словарь для K, V в списке (застежка-молния (Index.flatten (), Value.flatten ())): NewDict [к] .append (v) и я в NewDict: NewDict [я] = пр.
Ji woong Yu
1

голосов
1

ответ
52

Просмотры

Пустые значения в панд - наиболее памяти эффективный способ отфильтровать пустые значения для некоторых столбцов, но сохранить пустые значения для одного столбца?

Использование Python, у меня есть большой файл (миллионы строк), которые я читаю в с пандами использованием pd.read_csv. Моя цель состоит в том, чтобы минимизировать объем памяти, я использую как можно больше. Из примерно 15 столбцов в файле, я только хочу, чтобы держать 6 столбцов. Из этих 6 колонок, у меня есть разные потребности пустых строк. В частности, на 5 колонок, я хотел бы, чтобы отфильтровать / игнорировать все пустые строки. Но 1 из колонн, мне нужно держать только пустые строки. Что самое памяти эффективный способ сделать это? Я думаю, у меня есть две проблемы: во-первых, глядя на документацию для панды read_csv, это мне не ясно, есть ли способ, чтобы отфильтровать пустые строки. Есть набор параметров и спецификаций для read_csv - или с каким-либо другим способом --that я могу использовать, чтобы отфильтровать пустые строки? Во-вторых,
TJE
1

голосов
2

ответ
142

Просмотры

How to perform XOR operations on every X consecutive rows numpy Python

У меня есть Python NumPy массив, как это Давайте назовем это my_numpy_array А может доходить до миллиона значений! >>> my_numpy_array массив ([[1, 0, 0, 0, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 1, 0],........................ [0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 1, 0, 0, 0, 1, 1]]), а другой NumPy массив, как это называют его second_array, (который не настолько велик) массив ([[1, 1, 1, 0, 0, 0, 0, 1], #row 1 [ 1, 1, 0, 0, 0, 0, 1, 0], #row 2 [1, 1, 1, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0 , 1, 1], [1, 1, 1, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 0 , 0, 0, 0, 1], [1, 1, 0, 0, 0, 0, 1, 0], ...................... . #row 9 [1, 1, 1, 0, 0, 0, 0, 1]]) #can быть любое количество строк !!! Я хочу, чтобы XOR эти 9 (это X..ie может быть любое количество) строк с каждые 9 строк в my_numpy_array. Я пытался работать вокруг с np.logical_xor (), но could'nt делать то, что я хотел! Также обратите внимание, если количество строк в my_numpy_arr не кратно 9 (т.е. X) не говорят, что нет строк в 2701 .. первый 2700 не проблема! но последний будет XOR-е изд только с первой из second_array, если это было 2702, то только первые две строки из second_array .. Любая помощь очень ценится! Спасибо е X) не говорят, что нет строк в 2701 .. первый 2700 не проблема! но последний будет XOR-е изд только с первой из second_array, если это было 2702, то только первые две строки из second_array .. Любая помощь очень ценится! Спасибо е X) не говорят, что нет строк в 2701 .. первый 2700 не проблема! но последний будет XOR-е изд только с первой из second_array, если это было 2702, то только первые две строки из second_array .. Любая помощь очень ценится! Спасибо
poda_badu
1

голосов
0

ответ
232

Просмотры

compute mfcc for audio file over fixed chunks and save them separately

Что я мог сделать: В настоящее время я в состоянии генерировать MFCC для всех файлов в данной папке и сохранить их следующим образом: Защита gen_features (in_path, out_path): SRC = in_path + «/» OUTPUT_PATH = out_path + «/» ср = 22050 path_to_audios = [os.path.join (SRC, е) для F в os.listdir (SRC)] для аудио в path_to_audios: audio_data = librosa.load (audio_path, ср = 22050) [0] # получение у mfcc_feature_list = librosa.feature.mfcc (у ​​= audio_data, ср = ср) # создать MFCC функции np.savetxt (бла blahblah, mfcc_feature_list, ограничителем = "\ т") gen_features ( '/ дом / данные', 'главная / данные / особенности «) ТРУДНОСТЬ: мои входные аудиозаписи довольно долго, каждый длиной зарегистрировано не менее 3-4 часов. эта программа является очень неэффективной, так как размер файла после np.savetxt становится довольно большим ~ 1. 5МБ текстовый файл в течение 1 минуты аудио. Я планирую совмещать MFCC с более широкими возможностями в будущем. Таким образом, сохранен размер текстового файла взорвется. Я хочу, чтобы держать его меньше 5 минут куски для легкой обработки. Что я хочу сделать: добавить еще один параметр LEN для gen_features, это необходимо указать длину аудио, обрабатываемых одновременно. Таким образом, если входной аудиосигнал abc.mp3is длиной 13 минут, и я указываю LEN = 5 означает 5minutes, то MFCC должны быть вычислены для [0.0,5.0) [5.0,10.0) и [10.0,13.0], и они должны быть сохранены как mfcc_filename_chunk_1 .csv mfcc_filename_chunk_2.csv mfcc_filename_chunk_3.csv Как это я хочу сделать это для всех файлов в этом каталоге. Я хочу сделать это с помощью достичь librosa. Я не могу получить какие-либо идеи о том, как действовать. Более удивительное, что нужно сделать было бы вычислить это более перекрывающиеся интервалы,
kRazzy R
1

голосов
0

ответ
263

Просмотры

Импорт Numpy Упаковка для IronPython

Так я создаю приложение с помощью C #, который требует вызова питон скрипт, который нужно импортировать NumPy. Мой питон версия 3.6, и я бегу IronPython 2.7 (64-разрядная версия). Это ошибка, я получаю. «Оригинальная ошибка: не может импортировать multiarray из numpy.core». Есть ли способ, что я могу ссылаться Numpy? Я посмотрел везде, и я действительно не могу найти решение. Решение не Enthought больше недоступно из предыдущих ответов. Это мой код. ScriptRuntime scriptRuntime = Python.CreateRuntime (); ScriptEngine ScriptEngine = scriptRuntime.GetEngine ( "ру"); вар дорожки = scriptEngine.GetSearchPaths (); paths.Add (@ "C: \ Users \ Минхадж \ источник \ Workspaces \ Python \ PythonProject \ окр \ Lib"); paths.Add (@ "C: \ Users \ Минхадж \ источник \ Workspaces \ Python \ PythonProject \ Env \ Lib \ сайт-пакеты"); пути. Добавить (@ "C: \ Program Files (x86) \ IronPython 2,7 \ Lib"); scriptEngine.SetSearchPaths (дорожки); Динамический pythonScript = scriptRuntime.UseFile (путь); Динамический pythonMethod = pythonScript.hello ();
JohnTheWizard
1

голосов
1

ответ
317

Просмотры

Heatmap на плоскости х с г, как взвешивание

Я прошел через десятку ответов относительно тепловые карты на этом форуме, но я до сих пор работаю с проблемами, поэтому я думал, что я спрашиваю себя. Голые в виду, что до тех пор, месяц назад я понятия не имел, что Python был. Таким образом, у меня есть большой файл данных в трех столбцах. Первые две стандартные координаты XY. Для каждой точки, есть третья переменная, г, что я хочу использовать в качестве утяжелителей для создания своего рода тепловой карты. Я видел несколько методов, например, с помощью meshgrid или изменений размера массива, но то, что я думаю, что проблема заключается в том, что мой массив не является регулярным или прямоугольным. Это просто беспорядок случайных точек в плоскости ху, не равномерно разнесенных друг с другом, каждый из которых имеет значение аз. Вот лишь небольшой фрагмент данных, у меня есть в моей таблице: хуг 392 616 0,5 416 614 1 497 603 3 533 598 3,5 383 589 0,5 574 574 4 ... Я попробовал несколько способов, например, изменения формы массивы, но я всегда получаю какую-то ошибку. Как я могу построить эти данные в качестве тепловой карты с взвешиванием каждой точки, заданной г? Спасибо. Я понимаю, что, поскольку точки данных не регулярно растянуты, могут быть пробелы, где Heatmap будет равен нулю, но я могу сортировать те позже экстраполируя их взвешивание с помощью метода я разобрался, так что не будет быть проблемой. Ближайший я получил, чтобы получить график я смотрю на это, используя этот код: plt.hist2d (x, y, баки = 8, вес = г, CMAP = «Серый») plt.colorbar () Тем не менее, проблема с в том, что, если есть более одной точки в заданном «бункере», он вычисляет «совокупный» взвешивание - например, если в конкретном бункере имеются две точки данных с взвешиваний от 1 до 2,5, соответственно, бункер будет окрашен, как если бы его взвешивание было 1 + 2,5 = 3,5. Есть ли способ, я могу получить его, чтобы отобразить цвет, соответствующий весовой коэффициент точки данных ближе всего к центру бен? например, если точка данных с весовым 2.5 было очень близко к бен центру, а один с весом 1 был по одному из краев Бинь, есть способ, которым я могу получить бен иметь взвешивание 2.5? Спасибо и извините за беспокойство.
martin
1

голосов
0

ответ
109

Просмотры

Python Панда Dataframe самостоятельной Referencing переменная, как в функции новозеландского (х, у) к логике фрейма данных питона панд

В моем кодировании я возник проблемы преобразование непитоновских функций к функции питона для автореферентного переменного. Кратким об этом: автореферентном переменном является переменной, которая относится к его прошлым значениям предыдущих баров с правой стороны его декларации. Подробнее об этом в этой ссылке под самостоятельной referencingvariable https://blog.tradingview.com/en/tradingview-pine-script-new-features-223/ Однако на первой строке нет никакого значения SRV, поэтому значение SRV1 будет отсутствовать на первой строке (точнее будет NaN - Not-A-Number). Для того, чтобы изменить NaN значения, что можно превратить вызов в предыдущие значения в пг функции новозеландских Заменяет значения NaN нулями (или заданного значения) в серии. Входной сигнал: близко гладкая дата 01-07-02 5,4127 0,416113 02-07-02 5,4438 0,416113 03-07-02 5,4661 0,416114 04-07-02 5. Закрыть) здесь первый раз кама будет NaN поэтому близко должны быть назначены и второй итерации года предыдущее значение кама, который будет рассмотрен для расчета Таким образом, с вышеприведенном ввода первого значения кама будет 5,4127 (первое близкое значение) после предыдущего значения кама. гладкие и близкие значения уже доступны, как эта функция может быть преобразована в питона кода для ненулевого расчета. Окончательный выход должен быть в форме камы = NZ (kama1, близко) + гладкий * (крупный новозеландских (kama1, близко)) результат, ожидаемый близко гладкая Дата камы 01-07-02 5.4127 0,416113 prev.close + сглаживать * (prev.close-близко) 02-07-02 5,4438 0,416113 prevourKama + гладкая * (prev.row.close-previouskama) 03-07-02 5,4661 0,416114 "04-07-02 5,5283 0,416115" 05-07-02 5,5905 0,416116 "08-07-02 5,6255 0.
Marx Babu
1

голосов
1

ответ
1.9k

Просмотры

Плохой вход форма LabelEncoder

Я запутался почему я получаю плохую ошибку ввода формы. Линия, которая не является test_datapoint_encoded [я] = INT (label_encoder [число] .transform (test_datapoint [я])) Я прочитал здесь, что, видимо, функция преобразования не работает со списками, но я использовал другой пример, и его работает без ошибок. форма test_datapoint и test_datapoint_encoded являются одинаковыми. Я попытался, используя в качестве Numpy массивов, но я получил ту же ошибку. импортировать NumPy, как нп импорта matplotlib.pyplot, как PLT из sklearn.metrics импортировать classification_report, mean_absolute_error из sklearn импорта cross_validation, предварительной обработки из sklearn.ensemble импорта ExtraTreesRegressor из sklearn.metrics импортировать classification_report входные данные # нагрузки входной_файл = «» = traffic_data.txt данных [ ] с открытым (входной_файлом, 'R'), как F: для линии в ф. преобразование (test_datapoint [I])) = кол-кол + 1 test_datapoint_encoded = np.array (test_datapoint_encoded) # Предскажите выход для тестовой печати DataPoint ( "Прогнозируемая трафика:", Int (ext_regressor.predict ([test_datapoint_encoded]) [0] )) Я использовал простой пример кодера этикетки и не имеют каких-либо ошибок, прежде чем. импортировать NumPy в нп от sklearn импорта образца предварительной обработки #definde этикетки input_labels = [ «красный», «черный», «красный», «зеленый», «черный», «желтый», «белый»] #creating кодер этикетки и обучать его , Кодер = preprocessing.LabelEncoder () #train моего кодировщика ассоциировать каждый цвет с цифрами encoder.fit (input_labels) #print соответствия между словами и числами печатями ( «\ nLabel отображение:») для I, пункта в Перечислять (кодировщик. classes_):
CristiArde

Просмотр дополнительных вопросов