Форум программистов, компьютерный форум CyberForum.ru

Python: научные вычисления

Войти
Регистрация
Восстановить пароль
 
DarkPower
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 80
#1

NumPy перерасчет масива - Python

23.11.2016, 13:31. Просмотров 360. Ответов 7
Метки нет (Все метки)

У меня тут пару вопросов:
1) Можно ли средствами NumPy перерасчетать массив?
массив raster размером 10000х10000
формула расчета:
Python
1
rater[i,j] = raster[i,j]*var_1+var2
Сам делаю обычным способом через 2 цикла:
Python
1
2
3
4
5
6
while i < 10000:
    j = 0
    while j < 10000:
        raster[j, i] = raster[i,j]*var_1+var2
        j = j +1
    i = i + 1
Но выполняется долго.
2) Как сделать перерасчет быстрее? Проц. Intel Core i5-6600K 3.5
3) Может создать 4 потока по 2500 перасчитовать? Где про это можно почитать?

4) NumPy быстрее обрабатывает массив чем способ указанный выше?
5) Можно ли как-то его тоже в 4 потока кинуть?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2016, 13:31     NumPy перерасчет масива
Посмотрите здесь:

Подключение NumPy - Python
Работаю на Windows. На сайте библиотеки NumPy есть инструкция установки их продукта через гитхаб: git clone...

Numpy.matrix и функции - Python
Доброго времени суток. Возникла такая проблема с Python-ом: в нижеприведенном коде создаются две матрицы - L и L_v, далее необходимо...

Numpy, бинарные операции с матрицами - Python
Опять numpy! Есть две матрицы: А с размерностью m x n, B с размерностью n x k. Нужна функция, которая получает на вход обе матрицы, а...

Как заполнить массив numpy? - Python
Здраствуйте, не подскажите как заполнить массив numpy, пробую так np.arange(10) array() а нужно так array(, , , , , , , , , ])

NumPy для python 3.4 win64 - Python
На официальном сайте numpy нашел только версию для 32 разрядной системы? Неужели для 64 разрядной версии не существует? :cry:

Ошибка при установке numpy - Python
При установке мудуля numpy в питоне с помощью pip (pip install numpy) вылетает следующая ошибка:

NumPy, некоторые приёмы работы - Python
Делюсь. Когда-то для коллег сделал презентацию, по работе с NumPy. Описаны приёмы работы с NumPy для людей, которые знают...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jabbson
Модератор
Эксперт по компьютерным сетям
3111 / 2190 / 447
Регистрация: 03.11.2009
Сообщений: 6,928
Записей в блоге: 3
23.11.2016, 16:28     NumPy перерасчет масива #2
да, можно

Python
1
raster*var_1-var2
у меня выполняется около 3 секунд при размере 10к на 10к
DarkPower
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 80
23.11.2016, 19:36  [ТС]     NumPy перерасчет масива #3
Цитата Сообщение от Jabbson Посмотреть сообщение
да, можно
PythonВыделить код
1
raster*var_1-var2
у меня выполняется около 3 секунд при размере 10к на 10к
А можете полностью написать код
Python
1
2
3
raster = numpy.array(gdalBand.ReadAsArray()) 
start_time = time.clock()
raster = K2 / (Ml*raster+Al + 1) #тут ошибку выдает TypeError: only length-1 arrays can be converted to python scalars
Jabbson
Модератор
Эксперт по компьютерным сетям
3111 / 2190 / 447
Регистрация: 03.11.2009
Сообщений: 6,928
Записей в блоге: 3
23.11.2016, 19:47     NumPy перерасчет масива #4
если покажите что в переменных во всех, а то я понятия не имею, что за gdal (и кого он собственно "ждал" )
DarkPower
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 80
23.11.2016, 20:03  [ТС]     NumPy перерасчет масива #5
Цитата Сообщение от Jabbson Посмотреть сообщение
если покажите что в переменных во всех, а то я понятия не имею, что за gdal (и кого он собственно "ждал" )
Окей.
Python
1
2
3
4
5
6
7
8
9
#gdalBand.ReadAsArray() - массив чисел типа float, [10k,10k]
raster = numpy.array(gdalBand.ReadAsArray()) #Собственно (как я понял) array to numpy.array
start_time = time.clock() #тут замеряем время
#raster = K2 / (math.log(K1/(Ml*raster+Al) + 1))
'''
K2 - тип float 1321.07 или 1201.14
K1 - тип float 774.88 или 480.88
Ml и Al тоже тип float
'''
Этот код выполняется 140сек:
Python
1
2
3
4
5
6
7
8
9
raster = numpy.array(gdalBand.ReadAsArray())
start_time = time.clock()
#raster = K2 / (math.log(K1/(Ml*raster+Al) + 1))
for col in range(xsize):
    for row in range(ysize):
        L = Ml*raster[row,col]+Al
        raster[row,col] = K2 / (math.log(K1/L + 1))
end_time = time.clock() 
print "\ttime(sec) = " + str(end_time-start_time)
Jabbson
Модератор
Эксперт по компьютерным сетям
3111 / 2190 / 447
Регистрация: 03.11.2009
Сообщений: 6,928
Записей в блоге: 3
23.11.2016, 21:16     NumPy перерасчет масива #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от DarkPower Посмотреть сообщение
math.log
--> numpy.log

Добавлено через 3 минуты
у меня с массивом в 10к х 10к
Python
1
raster = K2 / (np.log(K1/(Ml*raster+Al) + 1))
выполняется от 4 до 6 секунд
DarkPower
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 80
23.11.2016, 21:23  [ТС]     NumPy перерасчет масива #7
Цитата Сообщение от Jabbson Посмотреть сообщение
math.log
--> numpy.log
Спасибо
с 130сек на 1,5сек упало =))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2016, 21:56     NumPy перерасчет масива
Еще ссылки по теме:

Memory Error in numpy array - Python
Добрый день! Подскажите, пожалуйста: моя программа обрабатывает порядка 100 текстов, строя из расcчитанных из них характеристик матрицу: ...

Запись из файла в NumPy массив - Python
Доброго времени суток. В Python совсем недавно и есть вопрос. Как импортировать данные из текстового файла прямиком в Numpy массив, чтобы в...

python 2,7 numpy scipy matplotlib - Python
Здравствуйте народ! Только начал изучение python и сразу-же тупик какой-то!!! Хотел сохранить файл после 1 занятия, вышло сообщение...

Вторая производная полинома (NumPy) - Python
Дан numpy-вектор и действительное число x. Вектор длины n+1 задает полином степени n. Найти вторую производную этого полинома (Например...

Замена цвета по маске в numpy - Python
Здравствуйте господа. Помогите разобраться. У меня есть код на C++: Mat mask; inRange(image, Scalar(255,0,0), Scalar(255,0,0), mask); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Jabbson
Модератор
Эксперт по компьютерным сетям
3111 / 2190 / 447
Регистрация: 03.11.2009
Сообщений: 6,928
Записей в блоге: 3
23.11.2016, 21:56     NumPy перерасчет масива #8
всегда пожалуйста
Yandex
Объявления
23.11.2016, 21:56     NumPy перерасчет масива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru