我有一些Python经验,但是(显然)没有太多的知识。简而言之,我需要使用主数组的1/5创建用于神经网络测试的验证数组。因此,我能够将i%5 == 0值附加到测试数组。从那里,我仍然可以每5个值打印一次。现在,当我去删除值时,出现索引或范围错误。我知道这是因为删除会更改len(string_arr)的整体值。但是,我一直没有找到一种补偿的方法。
下面是一个“虚拟”程序,用于解决我需要的内容,而不是我正在处理的实际问题。我需要一个1/5的验证数组,从主数组中删除该1/5,并在主数组上剩下4/5。下面,我试图附加到另一个数组并删除这些值,以免弄乱len(string_arr)...不起作用。
谢谢
english_list = open('file')
for word in english_list.readlines():
word = word[:-1].lower()
if len(word) == 6:
string_arr.append(word)
target_arr.append(0)
print(string_arr)
print(len(string_arr))
for i in range(len(string_arr)):
if i % 5 == 0:
test_arr.append(string_arr[i])
for i in range(len(string_arr)):
if i % 5 == 0:
one_more.append(string_arr[i])
for i in range(len(string_arr)):
if one_more[i] == string_arr:
string_arr.remove(one_more[i])
print(test_arr)
print(len(test_arr))
print(string_arr)
print(len(string_arr))
答案 0 :(得分:1)
您可以通过花式列表索引以更紧凑的方式进行操作:
small_cut = string_arr[::5]
remaining = [j for sub in zip(string_arr[1::5], string_arr[2::5], string_arr[3::5], string_arr[4::5]) for j in sub]
这是假设您正在使用普通的python列表;如果您使用的是numPy数组之类的方法,则可能会有更简单的方法(可能也更有效)来执行所需的操作。