我正在尝试生成一个从互联网上读取文本文件的数组.
我的目标是使用Python而不是MATLAB来替换MATLAB中的这一步:
url=['http://www.cdc.noaa.gov/Correlation/amon.us.long.data'];
urlwrite(url,'file.txt');
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码:
urllib.urlretrieve('http://www.cdc.noaa.gov/Correlation/amon.us.long.data', '/Users/epy/file2.txt')
a = np.loadtxt('/Users/epy/file2.txt', skiprows=1, dtype=None)
Run Code Online (Sandbox Code Playgroud)
但由于文件末尾的文本描述,它失败了.
你知道在最后是否存在跳过X行的方法,或者我必须使用某种字符串操作(readlines?)?
在pandas数据框中,我有一个如下所示的列:
0 M
1 E
2 L
3 M.1
4 M.2
5 M.3
6 E.1
7 E.2
8 E.3
9 E.4
10 L.1
11 L.2
12 M.1.a
13 M.1.b
14 M.1.c
15 M.2.a
16 M.3.a
17 E.1.a
18 E.1.b
19 E.1.c
20 E.2.a
21 E.3.a
22 E.3.b
23 E.4.a
Run Code Online (Sandbox Code Playgroud)
我需要将第一个元素所在的值E, M, or L分组,然后,对于每个组,我需要创建一个子组,其中索引1, 2, or 3将包含每个元素的记录lowercase letter(a,b,c,...)潜在的解决方案应该适用于任意数量的级别连接元素(在这种情况下,级别数为3(例如:A.1.a))
0 1 2
E 1 a
b
c
2 a
3 a
b
4 a
L 1 …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像的Datset:
data="""cruiseid year station month day date lat lon depth_w taxon count
AA8704 1987 1 04 13 13-APR-87 35.85 -75.48 18 Centropages_typicus 75343
AA8704 1987 1 04 13 13-APR-87 35.85 -75.48 18 Gastropoda 0
AA8704 1987 1 04 13 13-APR-87 35.85 -75.48 18 Calanus_finmarchicus 2340
AA8704 1987 1 07 13 13-JUL-87 35.85 -75.48 18 Acartia_spp. 5616
AA8704 1987 1 07 13 13-JUL-87 35.85 -75.48 18 Metridia_lucens 468
AA8704 1987 1 08 13 13-AUG-87 35.85 -75.48 18 Evadne_spp. 0
AA8704 1987 …Run Code Online (Sandbox Code Playgroud) 我正在尝试从PyQt5应用程序内部加载和查询JS地图窗口小部件.我可以使用这个方法:
PyQt5.QtWebEngineWidgets.QWebEngineView().page().runJavaScript()
从加载的网页执行JS函数QWebEngineView()但是我在理解如何将一个由JS函数返回的值存储回python方面遇到了麻烦.
这里有一个完整的例子:
下面的PyQt5代码在PyQt4主窗口中加载一个pyqtwebtest.html带有leaflet.js地图窗口小部件的html page(),并添加一个按钮来执行JS代码,目的是将返回的值存储在python变量中...
#!/usr/local/bin/python36
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.form_widget = FormWidget(self)
_widget = QWidget()
_layout = QVBoxLayout(_widget)
_layout.addWidget(self.form_widget)
self.setCentralWidget(_widget)
class FormWidget(QWidget):
def __init__(self, parent):
super(FormWidget, self).__init__(parent)
self.__controls()
self.__layout()
def __controls(self):
self.browser = QWebEngineView()
self.browser.load(QUrl('file:///Users/epi/pyqtwebtest.html'))
def __layout(self):
self.vbox = QVBoxLayout()
self.hBox = QVBoxLayout()
self.getboundsbutton = QPushButton()
self.hBox.addWidget(self.browser)
self.hBox.addWidget(self.getboundsbutton)
self.vbox.addLayout(self.hBox)
self.setLayout(self.vbox)
self.getboundsbutton.clicked.connect(self.getBounds) …Run Code Online (Sandbox Code Playgroud) 我有一个函数可以在多边形测试中执行一个点。它需要两个 2D numpy 数组作为输入(一系列点和一个多边形)。该函数返回一个布尔值作为输出(如果点位于多边形内,则为 True,否则为 False)。代码是从这个 SO answer借来的。下面是一个例子:
from numba import jit
from numba.pycc import CC
cc = CC('nbspatial')
import numpy as np
@cc.export('array_tracing2', 'b1[:](f8[:,:], f8[:,:])')
@jit(nopython=True, nogil=True)
def array_tracing2(xy, poly):
D = np.empty(len(xy), dtype=numba.boolean)
n = len(poly)
for i in range(1, len(D) - 1):
inside = False
p2x = 0.0
p2y = 0.0
xints = 0.0
p1x,p1y = poly[0]
x = xy[i][0]
y = xy[i][1]
for i in range(n+1):
p2x,p2y = poly[i % n]
if y > …Run Code Online (Sandbox Code Playgroud) python ×5
numpy ×2
pandas ×2
dataframe ×1
javascript ×1
numba ×1
pyqt5 ×1
qtwebengine ×1
scipy ×1