【发布时间】:2020-05-01 19:02:21
【问题描述】:
嗨,我正在尝试将一个 numpy 数组分成 2 部分,并通过一个循环,例如:
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 个数组,但最终形状很奇怪。
我在这里做错了吗(我想是的)?
【问题讨论】:
-
在索引时将标量整数转换为
uint8没有任何优势。 -
您想在列表中收集值,使用
alist=[]和alist.append(new_array)。np.concatenate在循环中很慢,并且很难正确初始化。还要小心初始化列表的位置 - 它应该在循环之外完成。
标签: python arrays numpy loops concatenation