我有一个二维数组,其元素是从文本文件中读取的。对于任意数量的元素,在#
处出现井号(twod_array[n][0]
)。对于第二维中不以井号开头的每个数组,我想执行一个计算。谁能帮我?我尝试使用numpy.split
,但我认为我的语法错误。这是数组的粗略格式:
twod_array = [
['#', author], ['#', <more strings>], [23, 345000, 234, 345],
[<more numbers>], [<more numbers>]
['#', <more strings>], [<more numbers>], [<more numbers>]
]
答案 0 :(得分:0)
真的糟糕的解释。我知道你想要使用分隔符来切片列表(我们称之为python上的列表,而不是数组)以确定从哪里开始和结束该切片。如果起始分隔符以#
开头,那么起始分隔符是该列表中的第一个项目,而结束分隔符是以相同的符号/标记/主题标签/其他内容开头的下一个项目。
1:首先,你需要修复你的列表,确保字符串是字符串,并且项目之间有逗号:
array = [
["author"],
["# something put here"],
[23, 345000, 234, 345],
["more numers"],
["more numers"],
["# something put here"],
["more numers"],
["more numers"]
]
2:然后您要查找将用作分隔符的那些行的索引。
注意:为简单起见,下一段代码假设您始终只有2行以#
开头。
start = end = None # Create empty variables
for index, item in enumerate(array): # Loop that iterates index and data
if str(item[0]).startswith("#"): # If data on first item starts with #
if start is None: # If start variable is unused yet
start = index + 1 # This is the start index
else: # If start variable is already used
end = index # This is the end index
3:现在我们知道从哪里开始以及在哪里结束,我们可以使用索引start
和end
来切割列表。我们为此创建了一个新列表:
my_sliced_array = array[start:end]
加分:随意使用下一个打印件进行测试并查看代码的结果:
print("printing from {} to {}".format(start, end))
print(my_sliced_array)