python - Python 数组,获取每 n 个条目,然后移动到下一个 n 条目,直到数组末尾
问题描述
我有一个包含 4,050,000 个条目的一维 numpy 数组,我将调用 image_t。我试图以这样一种方式对其进行切片,即检索前 10,000 个条目,即 image_t[0:10000],然后下一步将是 image_t[10000:20000],依此类推,直到它到达最后一个切片。
这最终会给我 405 个不同的数组,每个数组有 10,000 个条目。我的问题是我尝试了许多不同类型的循环,但我不确定出了什么问题。
我试过了:
将其定义为函数
def d_slice(S,step1):
return [S[i::step] for i in range(step)]
这不起作用,因为它返回 10,000 个数组,每个数组包含 405 个条目,这意味着它每 405 个条目计数一次。
我尝试了循环内的开始停止:
def s_t_slice(S):
for i in np.arange(0,4050000, 10000):
start = i
end = i + 10000
print(i)
return S[start:end]
在这里,我希望如果我告诉数组从 i 到 i + 10000 切片,它会按照我在第一段中解释的那样做。不幸的是,程序在 i = 0 之后就死掉了。不知道为什么。
接下来,我尝试创建一个 405 长的空数组列表并跳过该函数。
im_array = [[] for i in range(1,406)]
for i in range(0,405):
for j in range(0,4050000,10000):
print(j)
k = j + 10000
im_array[k] = image_t[j:k]
这样做的原因是我设法获得了 405 个数组,每个数组包含 10,000 个条目,但这些条目与整个数组中的条目不匹配(即 im_array[0] 与 image_t[0:10000] 等不同)。
我很确定我快要破解它了,但我可以用手来判断我错过了什么。
解决方案
你可以使用 np.array_split()。以下代码应该可以工作:
split_array = np.array_split(img_t, 405)
现在 split_array 变量是 405 个数组的列表,每个数组的形状为 (10000,)
推荐阅读
- c++ - Qt5 从另一个类访问 ui
- javascript - 尽管凭据 ='include',但每次 CORS POST 的会话 ID 都会更改
- python-2.7 - ConflictRefiner 不提供任何输出
- reactjs - Codesandbox “Preview on edit”不适用于 Aurelia,但适用于其他框架和原生 HTML
- java - 如何使 module-info.java 保持最新
- jquery - 当我在申请中使用凭据调用 HTTP.GET 时,角度 6 中的标题不起作用
- laravel - 如何通过具有最具体的关系来排序 Eloquent 中的行?
- c - C - 查找元素的频率失败,数字为 0
- javascript - 2 个具有最小和最大日期的依赖日期选择器
- c# - 从 EF 中的集合中删除项目 - 奇怪的问题