繁体   English   中英

Python阵列项目删除

[英]Python Array Item Remove

我有一些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))

您可以使用花式列表索引以更紧凑的方式执行此操作:

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数组之类的东西,则可能会有更简单的方法(可能也更有效)来执行所需的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM