我有一个np.数组,它的维数是478,533,3,3(变量名为“window”,使用NumPy步幅技巧从更大的2D数组中滑动窗口生成)。数组的478 x535部分基本上是3x 3数组的数组。我感兴趣的是迭代所有3x 3数组以获得值我尝试过各种循环组合,但似乎找不到一个“for”循环来遍历每个3x 3数组。
window = np.lib.stride_tricks.sliding_window_view(tiff_array, (3,3))
P11 = np.zeros([3,3])
for i,j in window:
block = window[i,j,:,:]
if block[1,1]==1:
if block[1,1]-1==1 and block[1,1]-1==1:
P11[0,0]=P11[0,0]+1
字符串
这是我在各种尝试中尝试过的一些快速代码。我继续得到错误“有太多的值要解包”,并且应该有两个值(我想是i,j)。我知道有两个以上的值,这就是为什么我试图在每个3x 3数组块上进行解包。我想我错过了一些明显的东西,但希望得到一些帮助。TIA!
2条答案
按热度按时间izkcnapc1#
您的方法适用于以下更改:
字符串
我不知道你真正需要做什么,但这种风格的矢量化方法通常更好:
型
t11
只是原始数组的一个视图,所以它不会占用额外的内存。ycggw6v22#
对于较小的起始数组:
字符串
各中心:
型
计算它们很容易:
型
正如我所说,我不知道你在总结什么。
但是让我们猜一猜,至少看看在块上迭代应该如何工作:
型
眯着眼往旁边看,我几乎可以想象
型
只是意味
型
也就是说,每个块的整行都是1
型
在我的小样本中,没有任何大小为3的1序列。