使用 python 在数组簇中查找最小值
Finding the minimum value in a cluster of array using python
我需要一些有关使用 python 进行编码的帮助。
问题来了。
假设我有一个包含浮点数的数组 (size = (50,50))。我想找到每个单元格簇的最小值(大小 = (10,10))。所以我总共会有 25 个值。
这是我到目前为止所做的,也许还有另一种方法可以让程序 运行 更快,因为我需要它来处理一个相当大的数组(比如说 100 万 x 1000000 的单元)。
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))
我不确定它的速度,但使用 numpy 切片应该可以简化您的工作。
您可以避免所有这些 for 循环。
这是一些示例代码
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
你也可以检查这个tutorial
我需要一些有关使用 python 进行编码的帮助。
问题来了。
假设我有一个包含浮点数的数组 (size = (50,50))。我想找到每个单元格簇的最小值(大小 = (10,10))。所以我总共会有 25 个值。 这是我到目前为止所做的,也许还有另一种方法可以让程序 运行 更快,因为我需要它来处理一个相当大的数组(比如说 100 万 x 1000000 的单元)。
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))
我不确定它的速度,但使用 numpy 切片应该可以简化您的工作。 您可以避免所有这些 for 循环。 这是一些示例代码
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
你也可以检查这个tutorial