关于第一个问题,你可以这样做的一种方法,严格只使用 numpy 将创建一个新的 numpy 结构化数组并为每个循环创建一组两个 (for x in list),顶部level 循环遍历数组,然后嵌套循环遍历每个数组元素,将其附加到新的结构化数组。话虽如此,这种方法会导致代码可读性差且过于复杂。
更好的选择是使用pandas DataFrame。您应该能够像 pandas.DataFrame(mylist) 一样简单地将所有 numpy 结构化数组直接转换为 pandas,或者如果您从外部文件中读取数据,则可以直接将数据读入数据帧。
以下方法从您的结构化数组开始(但如果使用 csv 文件或其他文件格式的其他函数,您可以将 pd.DataFrame 交换为 pd.read_csv(...) 之类的东西。
import pandas as pd
# need a list of those arrays to allow easy looping
listofArrays = [array1, array2, ...]
# now using list comprehension, converting all those to dataframes
listofDataFrames = [pd.DataFrame(arrayX) for arrayX in listofArrays]
# now we can just use pd.Concat to put all those together
completeSet = pd.concat(listofDataFrames)
这样你就有了一个数据框,把所有东西都放在一起了。如果您严格需要它,可以将其转换回纯粹的numpy 数据结构。
关于第二个问题,这可以使用正则表达式来解决,或者因为它是一个相当简单的字符串,使用split 和join。
不清楚您的输入数据格式是什么,但如果我没看错的话,它还没有在数组中。所以我认为输入看起来像
name: date1 timestamp data: 213123 12313
name2: date2 timestamp2 data: 21311223 313
即使不同,也适用相同的原则。
由于这相对简单,split 和 join 将是最简单的方法
originalnamestring = "Name: 2015-03-26 16:02:42.117000"
splitbyspace = originalnamestring.split(" ")
name = splitbyspace[0]
# and if you want to remove the : at end
name = name[:-1]
# if you want separate date and time
date = splitbyspace[1]
time = splitbyspace[2]
# or combined timestamp
timestamp = " ".join(splitbyspace[1:])