我正在尝试使用numpy.lib.stride_tricks.as_strided遍历数组的非重叠块,但是在查找参数文档时遇到了麻烦,因此我只能获得重叠块。
例如,我有一个4x5数组,我想从中获取4个2x2块。我可以排除右侧和底部边缘的多余单元格。
到目前为止,我的代码是:
import sys
import numpy as np
a = np.array([
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15],
[16,17,18,19,20],
])
sz = a.itemsize
h,w = a.shape
bh,bw = 2,2
shape = (h/bh, w/bw, bh, bw)
strides = (w*sz, sz, w*sz, sz)
blocks = np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
print blocks[0][0]
assert blocks[0][0].tolist() == [[1, 2], [6,7]]
print blocks[0][1]
assert blocks[0][1].tolist() == [[3,4], [8,9]]
print blocks[1][0]
assert blocks[1][0].tolist() == [[11, 12], [16, 17]]
结果得到的blocks数组的形状似乎正确,但是最后两个断言失败了,大概是因为我的shape或stride参数不正确。我应该设置这些值的什么值以获得不重叠的块?
import numpy as np
n=4
m=5
a = np.arange(1,n*m+1).reshape(n,m)
print(a)
# [[ 1 2 3 4 5]
# [ 6 7 8 9 10]
# [11 12 13 14 15]
# [16 17 18 19 20]]
sz = a.itemsize
h,w = a.shape
bh,bw = 2,2
shape = (h/bh, w/bw, bh, bw)
print(shape)
# (2, 2, 2, 2)
strides = sz*np.array([w*bh,bw,w,1])
print(strides)
# [40 8 20 4]
blocks=np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
print(blocks)
# [[[[ 1 2]
# [ 6 7]]
# [[ 3 4]
# [ 8 9]]]
# [[[11 12]
# [16 17]]
# [[13 14]
# [18 19]]]]
从1
in
a
(即blocks[0,0,0,0]
)开始,到2
(即blocks[0,0,0,1]
)的距离只有一项。由于(在我的机器上)a.itemsize
为4个字节,因此跨度为1 * 4 =4。这为我们提供了中的最后一个值strides = (10,2,5,1)*a.itemsize = (40,8,20,4)
。
从另一处开始1
,要到达6
(即blocks[0,0,1,0]
)距离5(即w
)个项目,因此跨步为5 * 4
=20。这占中倒数第二个值strides
。
从另一处开始1
,要到达3
(即blocks[0,1,0,0]
),便是2(即bw
)项,因此步幅为2 * 4
=8。这占的第二个值strides
。
最后,从出发1
,到达11
(即blocks[1,0,0,0]
)是10(即w*bh
)项,因此跨度为10 * 4 = 40 strides = (40,8,20,4)
。
我有一个熊猫数据框,其中包含如下所示的数据: 所以ID可以在特定月份的任何类下,下个月他的类可能会改变。现在我想做的是,为每个ID获取它在特定类别下的月数,以及它属于的最新类别。像下面这样: 如何在python中实现这一点。有人能帮我吗?另外,由于真实的数据集是巨大的,并且无法手动验证,我如何才能获得属于多个类的ID列表?
问题内容: 我有一个带有这样的在线会话的表(空行只是为了更好地显示): 我需要“包围”在线时间跨度: 我有此查询返回所需的结果: 但是,我担心性能。该表具有数亿行,时间分辨率为毫秒(如示例中所示,不是一分钟)。因此,CTE将会非常庞大。是否有人有避免自我加入和“ CONNECT BY”的解决方案? 单个智能分析功能将非常有用。 问题答案: 也尝试这个。我尽我所能进行了测试,我相信它涵盖了所有可
问题内容: 我有以下数组: 结果: 现在如何显示具有重复值的键?在此函数不应返回([0],[9]),因为没有重复的值。 如何找到相同值的键,例如 对于“ 2011-06-25”,应返回[7],[8] 问题答案: 函数名称显然很长;) 现在$ dups将包含一个由重复值键控的多维数组,其中包含每个重复项的键,如果您将“ true”作为第二个参数发送,它将返回没有重复值的原始数组。 或者,您可以将原始
我想从你那里得到电话号码 使用JavaScript/jQuery。 这个系列可能会更多。
我一直在尝试获取
我在同一个JPanel上有一个JButton和一个Point(由飞跃运动控制的运动)。但是,它们与顶部的JButton重叠。 有没有办法让我的点始终在JPanel应用程序窗口中的顶部? 这是一个代码片段: