Python 如何从两个numpy数组逐元素插入1d数组

Python 如何从两个numpy数组逐元素插入1d数组,python,arrays,numpy,matplotlib,Python,Arrays,Numpy,Matplotlib,我试着策划。我需要x轴作为时间,我写了这个方法。但我不能做出那样的结果 rtctime=np.array([17.02.31,17.02.37,17.02.38]) 如何逐元素组合RTCChour、rtcminute、RTCCond数组,当我合并数组时,图形的x轴上没有问题 from matplotlib.backends.backend_qt5agg import (NavigationToolbar2QT as NavigationToolbar) import numpy as np i

我试着策划。我需要x轴作为时间,我写了这个方法。但我不能做出那样的结果
rtctime=np.array([17.02.31,17.02.37,17.02.38])
如何逐元素组合RTCChour、rtcminute、RTCCond数组,当我合并数组时,图形的x轴上没有问题

from matplotlib.backends.backend_qt5agg import (NavigationToolbar2QT as NavigationToolbar)

import numpy as np
import traceback

class Main(QtWidgets.QMainWindow, Ui_MainWindow):
    rtcdate = np.array([])
    rtchour = np.array([])
    rtcminute = np.array([])
    rtcsecond = np.array([])
    rtctime = np.array([])

    data = np.array([])
  def __init__(self,parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)

        self.DataReader()

        self.pushButton_data.clicked.connect(self.Graph)

    def DataReader(self):

        graph_data = open("DATA.TXT", "r").read()
        downLines = graph_data.split('\n')

        for line in downLines:
            try:
                if len(line) > 1:
                 valuedate, valuehour,valueminute, valuesecond,\
                 value= line.split(' ')

                 self.rtcdate = np.append(self.rtcdate,valuedate)
                 self.rtchour = np.append(self.rtchour,valuehour)
                 self.rtcminute = np.append(self.rtcminute,valueminute)
                 self.rtcsecond = np.append(self.rtcsecond,valuesecond)
                 self.data = np.append(self.data,value)

            except:
             print("Error:")
             print(traceback.format_exc())
             continue
    def EKGDatas(self):

        self.MatplotWidget.canvas.axes.clear()
        self.MatplotWidget.canvas.axes.plot(self.rtcsecond, self.ekgdata)
        self.MatplotWidget.canvas.axes.tick_params(axis='x', rotation=70)
        self.MatplotWidget.canvas.draw()
       self.window.show()

if __name__== '__main__':
    import sys
    App = QtWidgets.QApplication(sys.argv)
    PrecautionApp = Main()
    PrecautionApp.show()
    sys.exit(App.exec())
DATA.TXT

30/07/2019 17 02 31 129
30/07/2019 17 02 37 1
30/07/2019 17 02 38 154
30/07/2019 17 02 39 147
我在做一个大项目。项目中存在pyqt5设计器代码。
我的目标是根据data.txt文件中的日期和时间绘制数据。完成此操作后,我将分析图表。因此,根据我的研究,我已经达到了将我的系列转换为numpy的需要。我将把它合并到一个数组中,在图形的x轴(小时、分钟、秒)上显示它,并将它发送到绘图函数。

一个选项是转换为
datetime
对象,该对象
matplotlib
可用于绘图。您可能需要重新思考代码的结构,但这将大大简化您的工作,并确保在绘制数据时,您的轴在从59分钟过渡到1小时时是一致的

类似这样的内容将为您提供时间列表:

import datetime as dt

graph_data = open("DATA.TXT", "r").read()
downLines = graph_data.split('\n')

timedata = []
for line in downLines:
    if len(line) > 1:
        timedata.append(dt.datetime.strptime(line,'%d/%m/%Y %H %M %S %f'))


print(timedata)
#[datetime.datetime(2019, 7, 30, 17, 2, 31, 129000), datetime.datetime(2019, 7, 30, 17, 2, 37,100000), datetime.datetime(2019, 7, 30, 17, 2, 38, 154000), datetime.datetime(2019, 7, 30, 17, 2, 39, 147000)]

不要使用
data=np.array([])
后跟
data=np.append(data,…)
的方法。很难做到正确,而且速度很慢。在列表
alist=[]
开头,然后在循环中执行
alist.append(…)
。速度更快。您是否考虑过使用
datetime
库?@BenT我的时间数据来自txt,我正在使用此保存数据。@hpaulj谢谢您的建议。如果我误解了,请帮我检查一下,首先我在转换np.array后使用了添加like array。你能发布完整的代码吗,从定义和初始化类对象开始。。。因为rtcdate=np.array([])rtchour=np.array([])rtcminute=np.array([])rtcsond=np.array([])rtctime=np.array([])都应该在def uuuu init_uuuuuuu;(self)下定义:如果它们是实例变量,并且您应该编写“self.rtchour”
import datetime as dt

graph_data = open("DATA.TXT", "r").read()
downLines = graph_data.split('\n')

timedata = []
for line in downLines:
    if len(line) > 1:
        timedata.append(dt.datetime.strptime(line,'%d/%m/%Y %H %M %S %f'))


print(timedata)
#[datetime.datetime(2019, 7, 30, 17, 2, 31, 129000), datetime.datetime(2019, 7, 30, 17, 2, 37,100000), datetime.datetime(2019, 7, 30, 17, 2, 38, 154000), datetime.datetime(2019, 7, 30, 17, 2, 39, 147000)]