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

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

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

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

23.11.2016, 13:31. Просмотров 386. Ответов 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 перерасчет масива (Python):

NumPy ValueError - Python
import numpy as np n = 5 A = np.zeros((n,n), dtype=np.int_) for i in range(n): A=int(input(&quot;A: &quot;)) N = len(A) for i in...

Установка NumPy - Python
Добрый день! У меня не получается установить NumPy на Windows. Запускаю exe-файл установщика, вылезает сообщение &quot;python version 2.7...

Numpy array - Python
Пытаюсь разобраться с такой штукой, как numpy. Вот что-то не очень получается с ним работать.. Напишите функцию, принимающую на вход...

Установка numpy - Python
Вопрос от новичка в python.Установил pycharm и интерпретатор cpython для него. Смог скомпилировать простейшие программы. Однако возникла...

NumPy, Matplotlib - Python
Доброго времени суток, дорогие форумчане! Прошу прощения за такой тривиальный вопрос! Но, как я начинающий в Python, то хотелось бы у...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jabbson
Модератор
Эксперт по компьютерным сетям
3132 / 2211 / 452
Регистрация: 03.11.2009
Сообщений: 6,982
Записей в блоге: 3
23.11.2016, 16:28 #2
да, можно

Python
1
raster*var_1-var2
у меня выполняется около 3 секунд при размере 10к на 10к
DarkPower
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 80
23.11.2016, 19:36  [ТС] #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
Модератор
Эксперт по компьютерным сетям
3132 / 2211 / 452
Регистрация: 03.11.2009
Сообщений: 6,982
Записей в блоге: 3
23.11.2016, 19:47 #4
если покажите что в переменных во всех, а то я понятия не имею, что за gdal (и кого он собственно "ждал" )
DarkPower
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 80
23.11.2016, 20:03  [ТС] #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
Модератор
Эксперт по компьютерным сетям
3132 / 2211 / 452
Регистрация: 03.11.2009
Сообщений: 6,982
Записей в блоге: 3
23.11.2016, 21:16 #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  [ТС] #7
Цитата Сообщение от Jabbson Посмотреть сообщение
math.log
--> numpy.log
Спасибо
с 130сек на 1,5сек упало =))
Jabbson
Модератор
Эксперт по компьютерным сетям
3132 / 2211 / 452
Регистрация: 03.11.2009
Сообщений: 6,982
Записей в блоге: 3
23.11.2016, 21:56 #8
всегда пожалуйста
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2016, 21:56
Привет! Вот еще темы с ответами:

Умножение numpy - Python
Всем привет, может кто подсказать по numpy: есть массивы numpy X = np.array() l1_delta = np.array() syn0 = np.random.random((2,1)) ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.11.2016, 21:56
Ответ Создать тему
Опции темы

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