小编Bas*_*sen的帖子

Python脚本给出`:没有这样的文件或目录`

我有几个python脚本工作得很好但是一个脚本(截至今天上午)开始给我这个错误,如果我尝试从bash运行它:

: 没有相应的文件和目录

我能够通过这样做来运行"破碎"的脚本,python script_name.py并且在查看了一下我拾取的一般想法之后可能是我的行结束了hashbang得到了改变(默默地)所以我查看了工作脚本的行结尾:set list如本问题所示,通过VI中的选项打破脚本- > 查看文本文件中的行尾

这两个文件看起来都是使用相同的字符(a $)结束,所以我对如何从这里开始感到有些茫然.具体来说,如果set list不是正确的方法,如何实际"看到"行结束.

PS:脚本是可执行的,shebang在那里,我说这只是这个脚本在周末之前工作正常,但是从今天早上开始给我这个错误.

- 编辑: -

运行脚本dos2unix确实让它再次工作但我想知道任何方式可视化VI(M)中某种方式结束的行或者为什么Geany在某种程度上转换了行结尾(因为我从不在dos /上工作) Windows系统无论如何).

python hashbang

38
推荐指数
2
解决办法
4万
查看次数

背包的变化......在python中

我有一个概念性的问题,我有几个包,每个包里面都包含许多元素.元素是类型A或类型B.我希望在有限数量的箱中分发包,使得箱之间的分布AB箱之间的差异不大.

这个问题非常复杂,因此我将尝试用严格的约束和一个概念性的例子来解释它.

约束

A package can only be used once
A package must be used entirely
The bins should have relatively equal distributions between `A` and `B` (max 5% deviation from the original ratio)
A package can be spread across all the bins in the given batch
I want to end up with as little as batches (size <= 3 bins) as possible
Run Code Online (Sandbox Code Playgroud)

示例(概念)

Plate 1: 92 * `A`
Plate 2: 92 …
Run Code Online (Sandbox Code Playgroud)

python algorithm bin-packing

14
推荐指数
1
解决办法
693
查看次数

使我的NumPy数组在进程间共享

我已经阅读了很多有关共享数组的问题,对于简单的数组来说这似乎很简单,但我仍然试图让它适用于我拥有的数组.

import numpy as np
data=np.zeros(250,dtype='float32, (250000,2)float32')
Run Code Online (Sandbox Code Playgroud)

我尝试以某种方式mp.Array接受它data,尝试将其转换为共享数组,我也尝试使用ctypes创建数组:

import multiprocessing as mp
data=mp.Array('c_float, (250000)c_float',250)
Run Code Online (Sandbox Code Playgroud)

我设法使代码工作的唯一方法是不将数据传递给函数,而是将编码的字符串传递给未压缩/解码,但最终会调用n(字符串数)进程,这似乎是多余的.我希望的实现是基于将二进制字符串列表切换为x(进程数)并传递此块,data以及a index除了data在本地修改之外的有效进程,因此关于如何使其共享的问题,任何示例工作使用自定义(嵌套)numpy数组已经是一个很好的帮助.

PS:这个问题是Python多处理的后续问题

python numpy shared-memory multiprocessing

11
推荐指数
1
解决办法
3257
查看次数

Python多处理性能

这应该是我的第三个也是最后一个问题,关于我试图提高我在python上做的一些统计分析的性能.我有两个版本的代码(单核与多处理),我期望通过使用多个核来获得性能,因为我希望我的代码能够解压缩/解压缩相当多的二进制字符串,遗憾的是我注意到性能实际上通过使用多个来减少核心.

我想知道是否有人对我观察到的内容有可能的解释(向下滚动到4月16日更新以获取更多信息)?

程序的关键部分是函数numpy_array(多处理中的+解码),下面的代码片段(可通过pastebin访问完整代码,下面进一步说明):

def numpy_array(data, peaks):
    rt_counter=0
    for x in peaks:
        if rt_counter %(len(peaks)/20) == 0:
            update_progress()
        peak_counter=0
        data_buff=base64.b64decode(x)
        buff_size=len(data_buff)/4
        unpack_format=">%dL" % buff_size
        index=0
        for y in struct.unpack(unpack_format,data_buff):
            buff1=struct.pack("I",y)
            buff2=struct.unpack("f",buff1)[0]
            if (index % 2 == 0):
                data[rt_counter][1][peak_counter][0]=float(buff2)
            else:
                data[rt_counter][1][peak_counter][1]=float(buff2)
                peak_counter+=1
            index+=1
        rt_counter+=1
Run Code Online (Sandbox Code Playgroud)

多处理版本使用一组函数执行此操作,我将在下面显示键2:

def tonumpyarray(mp_arr):
    return np.frombuffer(mp_arr.get_obj())

def numpy_array(shared_arr,peaks):
    processors=mp.cpu_count()
    with contextlib.closing(mp.Pool(processes=processors,
                                    initializer=pool_init,
                                    initargs=(shared_arr, ))) as pool:
        chunk_size=int(len(peaks)/processors)
        map_parameters=[]
        for i in range(processors):
            counter = i*chunk_size
            chunk=peaks[i*chunk_size:(i+1)*chunk_size]
            map_parameters.append((chunk, counter))
        pool.map(decode,map_parameters)

def decode ((chunk, counter)):
    data=tonumpyarray(shared_arr).view(
        [('f0','<f4'), …
Run Code Online (Sandbox Code Playgroud)

python performance multiprocessing

11
推荐指数
1
解决办法
8888
查看次数

为什么`列表中的x [无:无]:`工作?

我有一个脚本试图通过二进制搜索读取子集的开始和结束点,然后这些值用于创建切片以供进一步处理.

我注意到,当这些变量没有设置(搜索返回None)时,代码仍然会运行,最后我注意到从None到None的切片就像检查整个列表一样工作(参见下面的例子).

#! /usr/bin/env python
list = [1,2,3,4,5,6,7,8,9,10]
for x in list[None:None]:
  print x
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么选择这样做list[None:None]只是为了list[:],至少那是我认为发生的事情(纠正我,如果我错了).我个人认为在这种情况下抛出TypeError是可取的.

python slice

11
推荐指数
1
解决办法
440
查看次数

使用Django查询Neo4j数据库

我事先道歉,因为Django的思维方式对我来说仍然很陌生.我试图生成一个非常简单的页面,只是列出了使用Neo4j和Django(1.9.7)的简单密码查询的所有结果,我使用Python Neo4j驱动程序从Django访问数据库.但是,我越来越被卡住,已经到了,我只是一味地尝试新事物的地步,因此我想对我试图实现应该如何的基础知识一些指引/建议.

models.py

from django.views.generic.listimport ListView
from neo4j.v1 import GraphDatabase, basic_auth
from django.db import models

# Connect to DB
driver=GraphDatabase.driver("foo1",auth=basic_auth("foo2","foo3"))
session=driver.session()

class Stuff(models.Model):
  query = "MATCH (t:Time) return t"
  results=session.run(query)
  # Sanity check -> This just shows that the database and query both work
  for foo in results:
    print foo
    break
  def __str__(self):
    return results
Run Code Online (Sandbox Code Playgroud)

views.py

from django.views.generic.list import ListView
from .models import Stuff

# I assume that I should be using a ListView here (as I was trying to …
Run Code Online (Sandbox Code Playgroud)

python django neo4j

9
推荐指数
1
解决办法
634
查看次数

matplotlib在tkinter画布中的缩放功能

我一直在试图传递一些脚本(使用Tkinter的)的GUI的背后,到目前为止迄今该所打开的任何数据在Tkinter的画布显示(使用matplotlib绘制吧)做到了.

我唯一的问题是matplotlib中的标准缩放/滚动(使用鼠标左键"移动"绘图和鼠标右键"缩放")在画布中无法访问,基本上是功能matplotlib绘图窗口中的'4尖十字'.

我认为这需要创建我自己的处理程序,但我认为必须有一种方法来使用matplotlib的默认处理程序?我也看过这个问题中提到的'滚动'画布选项,但那些似乎只是改变了绘图区域的大小而不是放大/缩小数据,我也不想再添加任何按钮来操纵情节区.

我目前最简单的代码:

#! /usr/bin/env python
from Tkinter import *
import matplotlib.pyplot as plt
import matplotlib.backends.backend_tkagg as tkagg
import tkFileDialog

class App():
    def __init__(self,master):
        # VARIABLES
        self.inputFile = ""
        self.fig = plt.Figure()
        self.canvas = tkagg.FigureCanvasTkAgg(self.fig, master = master)
        self.canvas.get_tk_widget().pack()
        self.canvas.draw()

        # FRAME
        frame = Frame(master)
        master.title("MassyTools 0.1.1 (Alpha)")

        # VARIABLE ENTRIES

        # BUTTONS

        # MENU
        menu = Menu(root)
        root.config(menu = menu)

        filemenu = Menu(menu)
        menu.add_cascade(label="File", menu=filemenu)
        filemenu.add_command(label="Open Input File", command = self.openFile)
        calibmenu = Menu(menu)
        menu.add_cascade(label="Calibrate",menu=calibmenu)
        calibmenu.add_command(label="Open …
Run Code Online (Sandbox Code Playgroud)

python tkinter matplotlib tkinter-canvas

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

import java.util.regex失败

我在尝试导入java.util.regex时遇到错误(特别添加了一行,以确定错误是在导入中,因为我之前只有导入java.util.*).

find_glycopeps.java:5: cannot find symbol
symbol  : class regex
location: package java.util
import java.util.regex; // Should be redundant...
<some more messages about not recognising Pattern and Matcher, which are classes of the regex package>
Run Code Online (Sandbox Code Playgroud)

据我所知,正则表达式是一个"核心"库.我假设,因为导入java.io.*工作,跟踪库的位置的本机方法应该工作,所以我很困惑这是如何发生的.

PS:我必须注意到我在周末测试了一些java编译器,找到了我喜欢的1并且今天早上重新安装了一个'干净的'openjdk-6,这可能是问题的根源但不确定如何继续.

干杯

编辑(求助):我现在肯定会羞于羞耻,谢谢大家指出这个真正愚蠢的错误.

java regex import openjdk

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

高斯拟合返回负西格玛

我的一种算法基于高斯函数执行自动峰值检测,然后根据西格玛的乘数(用户设置)或“半高全宽”确定边缘。在用户指定他/她希望峰值限制在 2 Sigma 的情况下,算法从峰值中心 (mu) 获取 -/+ 2*sigma。但是,我注意到返回的 sigmacurve_fit可能为负数,这是之前已经注意到的事情,可以在此处看到。然而,当我通过 -/+ 确定边界时,这可能会导致算法“失败”(由于 - - 场景),如以下代码所示。

MVCE

#! /usr/bin/env python
from scipy.optimize import curve_fit
import bisect
import numpy as np

X = [16.4697402328,16.4701402404,16.4705402481,16.4709402557,16.4713402633,16.4717402709,16.4721402785,16.4725402862,16.4729402938,16.4733403014,16.473740309,16.4741403166,16.4745403243,16.4749403319,16.4753403395,16.4757403471,16.4761403547,16.4765403623,16.47694037,16.4773403776,16.4777403852,16.4781403928,16.4785404004,16.4789404081,16.4793404157,16.4797404233,16.4801404309,16.4805404385,16.4809404462,16.4813404538,16.4817404614,16.482140469,16.4825404766,16.4829404843,16.4833404919,16.4837404995,16.4841405071,16.4845405147,16.4849405224,16.48534053,16.4857405376,16.4861405452,16.4865405528,16.4869405604,16.4873405681,16.4877405757,16.4881405833,16.4885405909,16.4889405985,16.4893406062,16.4897406138,16.4901406214,16.490540629,16.4909406366,16.4913406443,16.4917406519,16.4921406595,16.4925406671,16.4929406747,16.4933406824,16.49374069,16.4941406976,16.4945407052,16.4949407128,16.4953407205,16.4957407281,16.4961407357,16.4965407433,16.4969407509,16.4973407585,16.4977407662,16.4981407738,16.4985407814,16.498940789,16.4993407966,16.4997408043,16.5001408119,16.5005408195,16.5009408271,16.5013408347,16.5017408424,16.50214085,16.5025408576,16.5029408652,16.5033408728,16.5037408805,16.5041408881,16.5045408957,16.5049409033,16.5053409109,16.5057409186,16.5061409262,16.5065409338,16.5069409414,16.507340949,16.5077409566,16.5081409643,16.5085409719,16.5089409795,16.5093409871,16.5097409947,16.5101410024,16.51054101,16.5109410176,16.5113410252,16.5117410328,16.5121410405,16.5125410481,16.5129410557,16.5133410633,16.5137410709,16.5141410786,16.5145410862,16.5149410938,16.5153411014,16.515741109,16.5161411166,16.5165411243,16.5169411319,16.5173411395,16.5177411471,16.5181411547,16.5185411624,16.51894117,16.5193411776,16.5197411852,16.5201411928,16.5205412005,16.5209412081,16.5213412157,16.5217412233,16.5221412309,16.5225412386,16.5229412462,16.5233412538,16.5237412614,16.524141269,16.5245412767,16.5249412843,16.5253412919,16.5257412995,16.5261413071,16.5265413147,16.5269413224,16.52734133,16.5277413376,16.5281413452,16.5285413528,16.5289413605,16.5293413681,16.5297413757,16.5301413833,16.5305413909,16.5309413986,16.5313414062,16.5317414138,16.5321414214,16.532541429,16.5329414367,16.5333414443,16.5337414519,16.5341414595,16.5345414671,16.5349414748,16.5353414824,16.53574149,16.5361414976,16.5365415052,16.5369415128,16.5373415205,16.5377415281,16.5381415357,16.5385415433,16.5389415509,16.5393415586,16.5397415662,16.5401415738,16.5405415814,16.540941589,16.5413415967,16.5417416043,16.5421416119,16.5425416195,16.5429416271,16.5433416348,16.5437416424,16.54414165,16.5445416576,16.5449416652,16.5453416729,16.5457416805,16.5461416881,16.5465416957,16.5469417033,16.5473417109,16.5477417186,16.5481417262,16.5485417338,16.5489417414,16.549341749,16.5497417567,16.5501417643,16.5505417719,16.5509417795,16.5513417871,16.5517417948,16.5521418024,16.55254181,16.5529418176,16.5533418252,16.5537418329,16.5541418405,16.5545418481,16.5549418557,16.5553418633,16.5557418709,16.5561418786,16.5565418862,16.5569418938,16.5573419014,16.557741909,16.5581419167,16.5585419243,16.5589419319,16.5593419395,16.5597419471,16.5601419548,16.5605419624,16.56094197,16.5613419776,16.5617419852,16.5621419929,16.5625420005,16.5629420081,16.5633420157,16.5637420233,16.564142031]
Y = [11579127.8554,11671781.7263,11764419.0191,11857026.0444,11949589.1124,12042094.5338,12134528.6188,12226877.6781,12319128.0219,12411265.9609,12503277.8053,12595149.8657,12686868.4525,12778419.8762,12869790.334,12960965.209,13051929.5278,13142668.3154,13233166.5969,13323409.3973,13413381.7417,13503068.6552,13592455.1627,13681526.2894,13770267.0602,13858662.5004,13946697.6348,14034357.4886,14121627.0868,14208491.4544,14294935.6166,14380944.5984,14466503.4248,14551597.1208,14636210.7116,14720329.3102,14803938.4081,14887023.5981,14969570.4732,15051564.6263,15132991.6503,15213837.1383,15294086.683,15373725.8775,15452740.3147,15531115.5875,15608837.2888,15685891.0116,15762262.3488,15837936.8934,15912900.2382,15987137.9762,16060635.7004,16133379.0036,16205353.4789,16276544.72,16346938.7731,16416522.8674,16485284.4226,16553210.8587,16620289.5956,16686508.0531,16751853.6511,16816313.8096,16879875.9485,16942527.4876,17004255.8468,17065048.446,17124892.7052,17183776.0442,17241685.8829,17298609.6412,17354534.739,17409448.5962,17463338.6327,17516192.2683,17567996.9463,17618741.7702,17668418.588,17717019.5043,17764536.6238,17810962.0514,17856287.8916,17900506.2493,17943609.2292,17985588.936,18026437.4744,18066146.9493,18104709.4653,18142117.1271,18178362.0396,18213436.3074,18247332.0352,18280041.3279,18311556.2901,18341869.0265,18370971.642,18398856.332,18425517.6188,18450952.493,18475158.064,18498131.4412,18519869.7341,18540370.0523,18559629.505,18577645.202,18594414.2525,18609933.7661,18624200.8523,18637212.6205,18648966.1802,18659458.6408,18668687.1119,18676648.7029,18683340.5233,18688759.6825,18692903.29,18695768.4553,18697352.5327,18697655.9558,18696681.2608,18694431.0245,18690907.8241,18686114.2363,18680052.838,18672726.2063,18664136.918,18654287.5501,18643180.6795,18630818.883,18617204.7377,18602340.8204,18586229.7081,18568873.9777,18550276.2061,18530438.9703,18509364.8471,18487056.4135,18463516.2464,18438747.4526,18412756.9228,18385553.1936,18357144.808,18327540.3094,18296748.2409,18264777.1456,18231635.5669,18197332.0479,18161875.1318,18125273.3619,18087535.2812,18048669.4331,18008684.3606,17967588.6071,17925390.7158,17882099.2297,17837722.6922,17792269.6464,17745748.6355,17698168.2027,17649537.512,17599868.3744,17549173.3069,17497464.8262,17444755.4492,17391057.6927,17336384.0736,17280747.1087,17224159.3148,17166633.2088,17108181.3075,17048816.1277,16988550.1864,16927396.0002,16865366.0862,16802472.961,16738729.1416,16674147.1447,16608739.4873,16542518.6861,16475497.2591,16407688.2541,16339106.0951,16269765.4262,16199680.8916,16128867.1358,16057338.8029,15985110.5372,15912196.9829,15838612.7844,15764372.5859,15689491.0316,15613982.7659,15537862.4329,15461144.6771,15383844.1425,15305975.4735,15227553.3143,15148592.3093,15069107.1026,14989112.3386,14908622.6595,14827652.5673,14746216.3337,14664328.209,14582002.4435,14499253.2874,14416094.9911,14332541.8049,14248607.9791,14164307.764,14079655.4098,13994665.1668,13909351.2855,13823728.016,13737809.6086,13651610.3137,13565144.3816,13478426.0625,13391469.6068,13304289.2646,13216899.2865,13129313.8865,13041546.3657,12953609.0623,12865514.2686,12777274.277,12688901.3798,12600407.8693,12511806.0378,12423108.1777,12334326.5812,12245473.5407,12156561.3486,12067602.297,11978608.6785,11889592.7852]

def gaussFunction(x, *p):
    """Define and return a Gaussian function.

    This function returns the value of a Gaussian function, using the
    A, mu and sigma value that is provided as *p.

    Keyword arguments:
    x -- number
    p -- A, mu and sigma numbers …
Run Code Online (Sandbox Code Playgroud)

python gaussian curve-fitting scipy

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

在R中添加线对

我有一些成对测量的数据(例如 1C,1M,2C和2M),我分别绘制了这些数据(如C和M)。但是,我想在每对之间添加一条线(例如,从C列的点1到M'列'的点1的线)。

整个数据集的一小部分:

PairNumber  Type    M
1   M   0.117133
2   M   0.054298837
3   M   0.039734
4   M   0.069247069
5   M   0.043053957
1   C   0.051086898
2   C   0.075519
3   C   0.065834198
4   C   0.084632915
5   C   0.054254946
Run Code Online (Sandbox Code Playgroud)

我使用以下微小的R代码段生成了以下图片:

boxplot(test$M ~ test$Type)
stripchart(test$M ~ test$Type, vertical = TRUE, method="jitter", add = TRUE, col = 'blue')
Run Code Online (Sandbox Code Playgroud)

当前情节: 在此处输入图片说明

我想知道实现此目标需要什么命令或功能(下面仅给出了一些代码,给出了所需结果的粗略草图)。

所需图 在此处输入图片说明

另外,用ggplot进行此操作对我也很好,我可以使用以下替代ggplot代码来生成类似于上述第一个图的图:

ggplot(,aes(x=test$Type, y=test$M)) + 
  geom_boxplot(outlier.shape=NA) +
  geom_jitter(position=position_jitter(width=.1, height=0))
Run Code Online (Sandbox Code Playgroud)

我一直在尝试geom_path,但是我没有找到实现我想要的正确语法。

r scatter-plot

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