python分割成数组_python – 将numpy数组拆分成块

我写了一个例程,用块切割矩阵.这个例子很容易理解.我以简单的形式编写它来显示结果(仅用于检查目的).如果您对它感兴趣,可以在输出中包含块数或任何内容.

import matplotlib.pyplot as plt

import numpy as np

def cut_array2d(array, shape):

arr_shape = np.shape(array)

xcut = np.linspace(0,arr_shape[0],shape[0]+1).astype(np.int)

ycut = np.linspace(0,arr_shape[1],shape[1]+1).astype(np.int)

blocks = []; xextent = []; yextent = []

for i in range(shape[0]):

for j in range(shape[1]):

blocks.append(array[xcut[i]:xcut[i+1],ycut[j]:ycut[j+1]])

xextent.append([xcut[i],xcut[i+1]])

yextent.append([ycut[j],ycut[j+1]])

return xextent,yextent,blocks

nx = 900; ny = 650

X, Y = np.meshgrid(np.linspace(-5,5,nx), np.linspace(-5,5,ny))

arr = X**2+Y**2

x,y,blocks = cut_array2d(arr,(10,10))

n = 0

for x,y,block in zip(x,y,blocks):

n += 1

plt.imshow(block,extent=[y[0],y[1],x[0],x[1]],

interpolation='nearest',origin='lower',

vmin = arr.min(), vmax=arr.max(),

cmap=plt.cm.Blues_r)

plt.text(0.5*(y[0]+y[1]),0.5*(x[0]+x[1]),str(n),

horizontalalignment='center',

verticalalignment='center')

plt.xlim([0,900])

plt.ylim([0,650])

plt.savefig("blocks.png",dpi=72)

plt.show()

输出是:

问候

注意:我认为您可以使用np.meshgrid优化此例程,而不是使用xextent& yextent.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值