Python 如何从两个numpy数组逐元素插入1d数组
我试着策划。我需要x轴作为时间,我写了这个方法。但我不能做出那样的结果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
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)]