3 回答
TA贡献1793条经验 获得超6个赞
This should do the trick
Y = 961
X = 832
all_ = np.random.rand(832*961)
# Iterating over the values of y
for i in range(1,Y):
# getting the indicies from the array we need
# i - 1 = Start
# X*i = END
# 2 is the step
indicies = list(range(i-1,X*i,2))
# np.take slice values from the array or get values corresponding to the list of indicies we prepared above
required_array = np.take(indices=indices)
TA贡献1804条经验 获得超2个赞
假设您有一个形状数组(x * y,),想要分块处理x。您可以简单地重新调整数组的形状来调整(y, x)和处理行:
>>> x = 832
>>> y = 961
>>> arr = np.arange(x * y)
现在重塑并批量处理。在下面的示例中,我取每行的平均值。您可以通过这种方式将任何您想要的函数应用于整个数组:
>>> arr = arr.reshape(y, x)
>>> np.mean(arr[:, ::2], axis=1)
>>> np.mean(arr[:, 1::2], axis=1)
重塑操作不会更改数组中的数据。它指向的缓冲区与原始缓冲区相同。ravel您可以通过调用数组来反转重塑。
TA贡献1851条经验 获得超4个赞
对于对此解决方案感兴趣的任何人(每次迭代,而不是每次迭代增加移位):
for i in range(Y):
shift = X * (i // 2)
begin = (i % 2) + shift
end = X + shift
print(f'{begin}:{end}:2')
添加回答
举报