python - 搜索每个子数组中的最小值的函数
问题描述
我正在尝试找出提取最小值的方法。主矩阵(8x8)的每个子数组(4x4)的值。请参考代码中的粗体部分,看看我在哪里弄错了:(
D = [0,2,3,6,7,5,7,7,2,0,2,5,8,6,8,6,3,2,0,3,10,8,6,4,6,5,3,0,8,6,4,2,7,8,10,8,0,2,4,6,5,6,8,6,2,0,2,4,7,8,6,4,4,2,0,2,7,6,4,2,6,4,2,0]
D=np.array(D).reshape(8,8)
n=np.shape(D)[0]
def getmin_submatrix(k,n):
if k>n:
pass
else:
#por cada fila en el rango(8-k+1)
for row in range(n-k+1):
#por cada columna en el rango(8-k+1)
for col in range(n-k+1):
**sub=np.array(n-k+1,n-k+1)**
#por cada fila en la submatriz (4,4)
for p in range(row,k+row):
#por cada columna en la submatriz (4,4)
for q in range(col,k+col):
**mini=sub.min()**
print(mini,end='')
print()
getmin_submatrix(4,n)
解决方案
这将遍历矩阵,您可以定义子矩阵大小和步幅,并为您打印每个子矩阵的最小值。
import numpy as np
D = [0,2,3,6,7,5,7,7,2,0,2,5,8,6,8,6,3,2,0,3,10,8,6,4,6,5,3,0,8,6,4,2,7,8,10,8,0,2,4,6,5,6,8,6,2,0,2,4,7,8,6,4,4,2,0,2,7,6,4,2,6,4,2,0]
D=np.array(D).reshape(8,8)
n=np.shape(D)[0]
def find_min(M, k, stride):
for row in range(0, M.shape[0]-k+1, stride):
for column in range(0, M.shape[1]-k+1, stride):
print(M[row:row+k, column:column+k].min())
find_min(D, 4, 1)
推荐阅读
- r - 此 R 代码是否会计算有多少调查提交具有所有 4 个变量的值?
- php - 如何从文件中的列表创建符号链接
- machine-learning - Hyperopt 更改 Trials() 对象的值;热启动 Hyperopt
- python - 替换数学公式中的点积运算符
- javascript - Chrome 在 .pause() 和 .currentTime=0 调用后隐藏视频
- c# - 由于 SDK 不匹配,MEF 加载失败
- r - 如何为尚未创建的renderUI / uiOutput块中的输入计时R闪亮中的反应输入更新?
- python - 获取符合我标准的 np.array 索引的最快方法
- python - 在自定义 Django 管理面板中使用数据库中可用的现有销售记录显示仪表板图表
- c# - 在 JsonConvert 结果 C# 上调用方法