Форум сайта python.su
День добрый, у меня возникла проблема при работе с двумерными массивами.
Вобщем надо найти в заданом массиве (например 10х10) подмассив 3х3, сумма элементов которого максимальна.
Как я полагаю надо из массива вытаскивать два подмассива 3х3, тот у которого сумма элементов больше запоминать и сравнивать со следующим 3х3 массивом, и таким образом зациклить пока не найдем с максимальной суммой элеменов.
Как это реализовать до меня не доходит. Как из массива достать подмассивы? Как зациклить всю эту шнягу?Как сумировать элементы в подмассиве?
Отредактировано (Окт. 27, 2010 10:47:28)
Офлайн
import numpy as np
def GetSub(arr):
n=3
a=np.array(arr)
ny,nx=a.shape
best=a[0:n,0:n]
bestsum=np.sum(a)
for iy in xrange(ny-n):
for ix in xrange(nx-n):
sub=a[iy:iy+n,ix:ix+n]
s=np.sum(sub)
if s>bestsum:
bestsum=s
best=sub
return best
>>> arr=np.eye(10)
>>> GetSub(arr)
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
Отредактировано (Окт. 27, 2010 21:57:32)
Офлайн
спс, буду разбираться
Офлайн
я новечек в програмирование, можеш обьяснить написаное…
Офлайн
Traceback (most recent call last):
File "I:\?????\matrix\src\matrix.py", line 2, in <module>
import numpy as np
ImportError: No module named numpy
Офлайн
File “<string>”, line None
SyntaxError: Non-ASCII character in file ‘I:\?????\matrix\src\matrix.py’, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
и вот это что за ошибка?
Офлайн
ZigertoN
1. Сохраняйте файл в UTF-8.
2. В начале файла сделайте строчку
# coding:utf-8
Офлайн
File "<string>", line None
SyntaxError: Illegal character in file 'I:\?????\matrix\src\matrix.py' for encoding 'utf-8'
Офлайн
не может найти путь до фаила , укажи латиной или правильно кодировку выстави
Офлайн