python - 除以 numpy 数组

标签 python arrays numpy loops concatenation

嗨,我正在尝试将 numpy 数组分成两部分,并在一个循环中进行此操作,例如:

main_array.shape = (50, 400, 400, 3)
for i = 0:
 sub_array_1 would be equal to (0:10, 400, 400, 3)
 sub_array_2 would be equal to (10:50, 400, 400, 3)
for i = 1:
 sub_array_1 would be equal to (10:20, 400, 400, 3)
 sub_array_2 would be equal to (20:50, 400, 400, 3)

etc...

如何做到这一点?

我使用以下代码,但得到了非常奇怪的结果:

i = 0
for k in range(1, k_fold+1):
        sub_array_1 = main_array[np.uint8(i):np.uint8(i+len(main_array)//5)]


        temp_0 = main_array[0:np.uint8(i)]
        temp_1 = main_array[np.uint8(i+len(main_array)//5):]
        sub_array_2 = np.concatenate((temp_0, temp_1), axis=0)

使用这个我确实获得了 2 个数组,但最终形状很奇怪。

我在这里做错了什么吗(我猜是这样)?

最佳答案

试试这个:

import numpy as np
main_array = np.random.rand(50, 400, 400, 3)
k_fold = 5
step = main_array.shape[0] / k_fold
for i in range(0,k_fold - 1):
    sub_array_1 = main_array[int(step * i):int(step * (i + 1))]
    sub_array_2 = main_array[int(step * (i + 1)):]
    print("sub_array_1: {} -> {}".format(int(step * i),int(step * (i + 1))))
    print(sub_array_1.shape, sub_array_2.shape)
    print()

输出:

sub_array_1: 0 -> 10
(10, 400, 400, 3) (40, 400, 400, 3)

sub_array_1: 10 -> 20
(10, 400, 400, 3) (30, 400, 400, 3)

sub_array_1: 20 -> 30
(10, 400, 400, 3) (20, 400, 400, 3)

sub_array_1: 30 -> 40
(10, 400, 400, 3) (10, 400, 400, 3)

关于python - 除以 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59744183/

相关文章:

python - Numpy:随机分割数组

python - 在 Python 中使用 Nan 对图像进行高斯滤波

python - 检查 TicTacToe 获胜条件的有效方法//编辑 : How to check for tie?

python - 获取目录后更新文件路径

javascript - 如何将具有数组键的对象动态添加到对象文字?

arrays - 在定时行删除时始终出现索引越界异常

python - 沿特定维度从 ndarray 中减去矩阵而不重新整形

python - 如何以向量化方式修改具有任意索引的 numpy 数组?

python - 在Python中使用OpenGL渲染纹理不是

python:分散不显示