小编tfv*_*tfv的帖子

在android上使用python和matplotlib

有没有办法在Android平板电脑上设置python 2.7.x + matplotlib,以便您可以运行简单的标准python代码?我希望能够运行我在Linux桌面上运行的相同脚本.这仅供我自己使用,我不需要将代码分发给其他任何人.

作为一个具体的例子,是否可以运行此脚本?

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)
Run Code Online (Sandbox Code Playgroud)

python android matplotlib tablet pydroid

32
推荐指数
2
解决办法
3万
查看次数

Python Convert Back Slashes转发斜杠

我在python中工作,我需要转换它:

C:\ folderA\folderB到C:/ folderA/folderB

我有三种方法:

dir = s.replace('\\','/')

dir = os.path.normpath(s) 

dir = os.path.normcase(s)
Run Code Online (Sandbox Code Playgroud)

在每种情况下,输出都是

C:folderAfolderB

我不确定我做错了什么,有什么建议吗?

python replace

27
推荐指数
5
解决办法
4万
查看次数

使用Scikit-Learn为Python中的随机森林绘制树

我想绘制一个随机森林的决策树.所以,我创建以下代码:

clf = RandomForestClassifier(n_estimators=100)
import pydotplus
import six
from sklearn import tree
dotfile = six.StringIO()
i_tree = 0
for tree_in_forest in clf.estimators_:
if (i_tree <1):        
    tree.export_graphviz(tree_in_forest, out_file=dotfile)
    pydotplus.graph_from_dot_data(dotfile.getvalue()).write_png('dtree'+ str(i_tree) +'.png')
    i_tree = i_tree + 1
Run Code Online (Sandbox Code Playgroud)

但它没有产生任何东西..你知道如何从随机森林中绘制决策树吗?

谢谢,

python tree pydot random-forest scikit-learn

16
推荐指数
3
解决办法
3万
查看次数

检测骰子的上侧

是否有可能检测到骰子的上侧?如果从顶部看,这将是一项简单的任务,从多个角度来看,多个方面都是可见的.

这是一个骰子的例子,随意拍摄自己的照片: 在此输入图像描述

您通常想知道您取得的分数.我很容易提取所有点,但如何只提取顶部的那些?在这种特殊情况下,顶部是最大的,但这可能并非总是如此.我正在寻找一些评估顶部正方形(或者在这种情况下是圆形,我可以提取的)与底部网格给出的透视相关的变形.

下面给出了具有一些结果的示例程序.

import numpy as np
import cv2

img = cv2.imread('dice.jpg')


# Colour range to be extracted
lower_blue = np.array([0,0,0])
upper_blue = np.array([24,24,24])

# Threshold the BGR image 
dots = cv2.inRange(img, lower_blue, upper_blue)

# Colour range to be extracted
lower_blue = np.array([0,0,0])
upper_blue = np.array([226,122,154])

# Threshold the BGR image 
upper_side_shape = cv2.inRange(img, lower_blue, upper_blue)

cv2.imshow('Upper side shape',upper_side_shape)
cv2.imshow('Dots',dots)

cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

一些结果图像: 在此输入图像描述

python opencv image-processing scikit-image

7
推荐指数
1
解决办法
847
查看次数

如何在Matplotlib中填充任意闭合区域?

让我从我的位置开始:

在此输入图像描述

我用以下代码创建了上面的图像:

import matplotlib.pyplot as plt
import numpy as np

color_palette_name = 'gist_heat'
cmap = plt.cm.get_cmap(color_palette_name)
bgcolor = cmap(np.random.rand())

f = plt.figure(figsize=(12, 12), facecolor=bgcolor,)
ax = f.add_subplot(111)
ax.axis('off')

t = np.linspace(0, 2 * np.pi, 1000)

x = np.cos(t) + np.cos(6. * t) / 2.0 + np.sin(14. * t) / 3.0
y = np.sin(t) + np.sin(6. * t) / 2.0 + np.cos(14. * t) / 3.0

ax.plot(x, y, color=cmap(np.random.rand()))
ax.fill(x, y, color=cmap(np.random.rand()))
plt.tight_layout()
plt.savefig("../demo/tricky.png", facecolor=bgcolor, edgecolor=cmap(np.random.rand()), dpi=350)
Run Code Online (Sandbox Code Playgroud)

有没有办法填充当线与其他颜色交叉时创建的循环(或类似三角形的区域)?它不一定是matplotlib,它可能是scikit-image或其他一些库.

我在想一些伪代码:

for region …
Run Code Online (Sandbox Code Playgroud)

python opencv matplotlib scikit-image

6
推荐指数
1
解决办法
5013
查看次数

在图像中填补漏洞

我需要使用python填充图像中的漏洞.这是我设法获得的对象的图像 - 它们实际上是我想要的对象的边缘,所以我需要填充它们. 在此输入图像描述

使用起来似乎很简单ndimage.binary_fill_holes(A),但问题是它产生了这个(手动填充红色):

在此输入图像描述

但我需要这个:

在此输入图像描述

这有什么办法可以解决?

如果你想尝试一下,这是第一张没有轴的图像: 在此输入图像描述

python opencv numpy scipy scikit-image

6
推荐指数
1
解决办法
955
查看次数

如何创建包含空格的图像路径?

在Sphinx中,我试图包含子目录中的图像.

虽然这适用于没有空格的路径,例如

.. image:: imagepath/image.png
Run Code Online (Sandbox Code Playgroud)

我没有成功的空间路径.

我试过的是:

.. image:: imagepath with space/image.png
.. image:: `imagepath with space/image.png`
.. image::`imagepath with space/image.png`
Run Code Online (Sandbox Code Playgroud)

我错过了什么?提前谢谢了.

restructuredtext python-sphinx

6
推荐指数
1
解决办法
333
查看次数

将决策树直接转换为png

我正在尝试生成一个我想使用点进行可视化的决策树。生成的点文件应转换为 png。

虽然我可以使用类似的东西在 dos 中完成最后一个转换步骤

export_graphviz(dectree, out_file="graph.dot")
Run Code Online (Sandbox Code Playgroud)

后跟一个 DOS 命令

dot -Tps graph.dot -o outfile.ps
Run Code Online (Sandbox Code Playgroud)

直接在 python dows 中执行所有这些操作不起作用并产生错误

AttributeError: 'list' object has no attribute 'write_png'
Run Code Online (Sandbox Code Playgroud)

这是我试过的程序代码:

from sklearn import tree  
import pydot
import StringIO

# Define training and target set for the classifier
train = [[1,2,3],[2,5,1],[2,1,7]]
target = [10,20,30]

# Initialize Classifier. Random values are initialized with always the same random seed of value 0 
# (allows reproducible results)
dectree = tree.DecisionTreeClassifier(random_state=0)
dectree.fit(train, target)

# Test classifier with other, …
Run Code Online (Sandbox Code Playgroud)

python scikit-learn

6
推荐指数
1
解决办法
2万
查看次数

如何访问数组?

我有一个在铣床上运行的 OPC 服务器,并且想要访问机器中当前可用的工具的名称。

我知道我正在寻找的变量的名称是

Sinumerik/Tool/Catalogue/toolIdent[1]
Sinumerik/Tool/Catalogue/toolIdent[2]
Run Code Online (Sandbox Code Playgroud)

等等。我可以在 uaexpert 等查看器中看到相应的值。

虽然我可以访问

Sinumerik/Tool/Catalogue/toolIdent
Run Code Online (Sandbox Code Playgroud)

通过依次从根向下走,使用诸如

children=Position.get_children()
for child in children:
    Position=child
Run Code Online (Sandbox Code Playgroud)

这种方法不起作用,toolIdent[1]因为这不是一个孩子。

如何访问数组的这些值?

编辑:另外一个备注:工具的名称存储为节点的值,而不是变量。我遇到过 get_array_dimensions 函数,但这似乎只适用于变量。

EDIT2:我附上了我正在寻找的阵列的UAEExpert视图的屏幕截图。数组的前三个值是 3D_BLUM、12 和 98。 在此处输入图片说明

EDIT3:在UAEExpert中,我可以toolIdent[2]通过使用“添加自定义节点”命令,选择一个字符串节点并提供“/Tool/Catalogue/toolIdent[2]”作为NodeId的参数来查看内容。我试图找出如何使用 python(最好是 opcua 库,并且我正在为在 Python 中实现这个目标提供赏金。

python opc-ua

6
推荐指数
1
解决办法
1107
查看次数

tkinter ttk 树视图彩色行

我正在尝试使用标签和 tag_configure 为 tkinter 树视图对象中的行设置颜色。

之前有过关于着色行的讨论,该讨论相当陈旧,似乎不再适用于 Python3:

ttk 树视图:交替行颜色

我添加了一个简短的例子。对我来说,所有行都保持白色,与我是在插入命令之前还是之后执行 tag_configure 无关。

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
w = tk.Label(root, text="Hello, world!")
w.pack()

lb= ttk.Treeview(root, columns=['number', 'text'], show="headings", height =20)
lb.tag_configure('gr', background='green')
lb.column("number", anchor="center", width=10)    
lb.insert('',tk.END, values = ["1","testtext1"], tags=('gr',))
lb.insert('',tk.END, values = ["2","testtext2"])

lb.pack()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

发生了什么变化或我错过了什么?

编辑: 似乎这是一个具有解决方法的新已知错误,但我无法正常工作:https : //core.tcl-lang.org/tk/tktview?name=509cafafae

EDIT2: 我现在使用 tk 版本 8.6.10(构建 hfa6e2cd_0,通道 conda-forge)和 python 3.7.3。任何人都可以用这个版本的 python 和 tk 重现这个错误吗?

python treeview tkinter ttk

6
推荐指数
1
解决办法
647
查看次数

使用滑块控件以交互方式更改图像的内容

我正在尝试使用滑块交互式更改图像的内容(例如,应用具有不同内核大小的中值运算)。

如果仅显示一张结果图像(参见注释行),这很好用,但使用子图功能时会遇到麻烦,因为该图像将不会更新。

我想念什么?

%matplotlib inline
from ipywidgets import interact, widgets
import matplotlib.pyplot as plt
import warnings

from skimage.morphology import disk
from skimage.filters import rank
from skimage.color import rgb2gray
import skimage.data


def f(Median_Size):
    selem = disk(int(Median_Size))
    with warnings.catch_warnings():
        warnings.simplefilter("ignore")
        img_median = rank.median(img_gray, selem=selem) 

    ax_neu.imshow(img_median, cmap="gray")
    fig.canvas.draw()
    #plt.imshow(img_median, cmap="gray") #This would work
    #plt.show()

image = skimage.data.camera() #plt.imread("Test.png")       
img_gray = rgb2gray(image)

fig = plt.figure(figsize=(6, 4))
ax_orig = fig.add_subplot(121) 
ax_neu = fig.add_subplot(122) 

ax_orig.imshow(img_gray, cmap="gray")
ax_neu.imshow(img_gray, cmap="gray")

interact(f, Median_Size=widgets.IntSlider(min=1,max=21,step=2,value=1)) 
Run Code Online (Sandbox Code Playgroud)

python matplotlib ipython jupyter-notebook

5
推荐指数
1
解决办法
1880
查看次数

通过 smtplib 发送邮件会浪费时间

我想使用 smtplib 使用 cron 作业每天发送一次状态邮件。

邮件发送效果很好,但是发送时间和日期似乎总是我阅读邮件时的时间和日期,而不是发送邮件时的时间和日期。这可能是 6 小时后。

我还没有找到有关向 smtplib 提供发送时间以及消息数据的提示。我是否遗漏了任何东西,还是我的邮件服务器配置有问题?但是,其他通过 Thunderbird 上交的邮件在此帐户下不会显示此效果。

我的python程序(删除了登录数据)如下所示:

import smtplib

sender = 'abc@def.com'
receivers = ['z@def.com']

message = """From: Sender <abc@def.com>
To: Receiver<z@def.com>
Subject: Testmail

Hello World.
""" 

try:
    smtpObj = smtplib.SMTP('mailprovider.mailprovider.com')
    smtpObj.sendmail(sender, receivers, message)         
    print "Successfully sent email"
except SMTPException:
    print "Error: unable to send email"
Run Code Online (Sandbox Code Playgroud)

[编辑]

按照建议使用电子邮件包进行编码,但我的收件箱中显示的时间仍然是阅读时间而不是发送时间。

import smtplib
from email.mime.text import MIMEText

sender = ..
receiver = ..

message = "Hello World" 
msg = MIMEText(message)
msg['Subject'] = 'Testmessage'
msg['From'] = sender …
Run Code Online (Sandbox Code Playgroud)

python smtplib

4
推荐指数
1
解决办法
4565
查看次数

使用Python使用AJAX分页的站点使用BeautifulSoup进行刮擦

我是编码和Python的新手,所以如果这是一个愚蠢的问题我会道歉.我想要一个遍历所有19,000个搜索结果页面的脚本,并为每个网址抓取所有网址.我已经完成了所有的报废工作,但无法弄清楚如何处理页面使用AJAX进行分页的事实.通常我只是使用url创建一个循环来捕获每个搜索结果,但这是不可能的.这是页面:http://www.heritage.org/research/all-research.aspx?cars&category = report

这是我到目前为止的脚本:

with io.open('heritageURLs.txt', 'a', encoding='utf8') as logfile:
    page = urllib2.urlopen("http://www.heritage.org/research/all-research.aspx?nomobile&categories=report")
    soup = BeautifulSoup(page)
    snippet = soup.find_all('a', attrs={'item-title'})
    for a in snippet:
        logfile.write ("http://www.heritage.org" + a.get('href') + "\n")

print "Done collecting urls"
Run Code Online (Sandbox Code Playgroud)

显然,它会刮掉结果的第一页,仅此而已.

我已经看了几个相关的问题,但似乎没有人使用Python,或者至少不是以我能理解的方式.预先感谢您的帮助.

python ajax selenium pagination beautifulsoup

2
推荐指数
1
解决办法
3562
查看次数