Нахождение минимального значения в кластере массива с помощью python - PullRequest
0 голосов
/ 05 марта 2020

Мне нужна помощь в кодировании с использованием python.

. Вот проблема.

Допустим, у меня есть массив (размер = (50,50)), содержащий числа с плавающей точкой , Я хотел бы найти минимальное значение для каждого кластера клеток (размер = (10,10)). В итоге у меня будет 25 значений. Это то, что я делал до сих пор, может быть, есть другой способ сделать это так, чтобы программа могла работать быстрее, так как мне нужно, чтобы она обрабатывала довольно большой массив (скажем, 1 мил х 1 милл ячеек).

import numpy as np
import random
def mini_cluster(z,y,x):
    a = []
    for i in range(y,y+10):
        for j in range(x,x+10):
            a.append(z[i,j])
    return min(a) 

z = np.zeros(shape=(50,50))

for i in range (len(z)):
    for j in range(len(z)):
        z[i,j] = random.uniform(10,12.5)

mini = []
for i in range(0,len(z),10):
    for j in range(0,len(z),10):
        mini.append(mini_cluster(z,i,j)) 

1 Ответ

0 голосов
/ 05 марта 2020

Я не уверен в его скорости, но использование нарезки numpy должно упростить вашу работу. Вы можете избежать всех этих петель. Вот пример кода

import numpy as np
arr=[[1,2,3,8],[4,5,6,7],[8,9,10,11],[0,3,5,9]]
arr_np = np.array(arr)
print(arr_np)
cluster= arr_np[:3,:3]
print('\n')
print(cluster)
print('\n')
print(np.amin(cluster))

[[ 1  2  3  8]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [ 0  3  5  9]]

[[ 1  2  3]
 [ 4  5  6]
 [ 8  9 10]]

1

, вы также можете проверить этот учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...