- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对 Python 还是很陌生,大部分代码都不是我写的,我只是想让它工作。我有以下两个 .py 文件:
这个叫做 FnSim.py-
import numpy,sys, os
import math
def intFn(kVars,params): # Do not change the name of this function
sinTh = kVars['y']/(numpy.sqrt(kVars['y']**2+(1000.)**2))
I = 4*((numpy.sin((numpy.pi*.7*sinTh)/.0006)/((.7*sinTh)/.0006))**2)*numpy.cos((numpy.pi*1.2*sinTh)/.0006)**2
if not math.isnan(I):
return I
else:
print 'Hello'
return 0.0
'''
sinTh = kVars['y']/(numpy.sqrt(kVars['y']**2+(params['R0'])**2))
A1 = numpy.complex(params['A1r'],params['A1i'])*numpy.e**(((-numpy.pi*params['p']*sinTh)/.0006)*1j)
A2 = numpy.complex(params['A2r'],params['A2i'])*numpy.e**(((numpy.pi*params['p']*sinTh)/.0006)*1j)
return (A1+A2)*numpy.conjugate(A1+A2)
'''
def simFn():
"""
This is the function that will do the actual simulating. Fill out the filepaths below.
"""
nTrueDir="./data/nTrueSF.npy"#Location to save the nTrue File
inputKVDir="./data/flatY.txt"#Loaction of the Generated MC KV text File
outputWeightDir="./data/wnListSF.npy"#Location where the weighted mask file will be saved
iList = numpy.load("./data/iListSF.npy")#Location of the list of intensities.
iMax = iList.max()
print iMax
gS.simulate(nTrueDir,inputKVDir,outputWeightDir,iList,iMax)
from generalSim import generalSim
inputKVDir="./data/FlatY.txt"#Loaction of the Generated MC KV File(Same as above)
gS = generalSim(KVDir = inputKVDir)
if sys.argv[1] == "i":
numpy.save("./data/iListSF.npy",gS.calcIList({'A2r': 186.55622562665766, 'R0': 1000.0, 'A1r': 186.5549385015023, 'p': 1.2010987369259563, 'A2i': 0.0, 'A1i': 0.4681942082158097}))
elif sys.argv[1] == "s":
simFn()
这个叫做generalSim.py-
import numpy
import os, sys
import fileinput
from FnSim import intFn
from random import random
class generalSim (object):
def __init__(self,KVDir):
self.KVDir = KVDir
def calcIList(self,params):
n = 0
iList = numpy.zeros(shape = (1))
for line in fileinput.input([self.KVDir]):
iList.resize(n+1)
kvAs = line.split(",")
kvAx = {kvA.split('=')[0]:float(kvA.split('=')[1]) for kvA in kvAs}
iList[n] = intFn(kvAx,params)
sys.stdout.write(str(n)+"\r")
sys.stdout.flush()
n+=1
return iList
def simulate(self,nTrueDir,inputKVDir,outputWeightDir,iList,iMax):
nTrueList = [((1.0/(iList.shape[0]))*(iList.sum(0)))]
numpy.save(nTrueDir,nTrueList)
wList=iList[:]/iMax
wnList=numpy.zeros(shape=(wList.shape[0]))
for wn in range(len(wList)):
if wList[wn]>random():
wnList[wn] = 1
numpy.save(outputWeightDir,wnList)
我在标有“数据”的文件夹中还有一个名为 FlatY.txt 的文本文件。 FlatY.txt 包含一百万行 Y 值。
我需要运行这些文件,以便创建 FnSim.py 中列出的 .npy 文件。我不太了解 Linux,但我的目的是将文件放在“数据”文件夹中。但是,如果我尝试编译 FnSim.py,控制台会显示:
Traceback (most recent call last):
File "FnSim.py", line 38, in <module>
from generalSim import generalSim
File "/home/gendreau/workspace/generalSim.py", line 5, in <module>
from FnSim import intFn
File "/home/gendreau/workspace/FnSim.py", line 38, in <module>
from generalSim import generalSim
ImportError: cannot import name generalSim
当我尝试运行 generalSim.py 时,我得到了这个:
Traceback (most recent call last):
File "generalSim.py", line 5, in <module>
from FnSim import intFn
File "/home/gendreau/workspace/FnSim.py", line 41, in <module>
if sys.argv[1] == "i":
IndexError: list index out of range
如何解决这些问题并生成必要的文件?
最佳答案
这是一种解决方法,但请参阅下文,希望它对您的工作有所帮助:
因为您有很多循环导入,即第一个模块调用第二个模块,第二个模块调用第一个模块,依此类推,获得所需结果的最直接解决方案是合并两个文件以避免循环导入:
import numpy
import os, sys
import math
import fileinput
from random import random
class generalSim (object):
def __init__(self,KVDir):
self.KVDir = KVDir
def calcIList(self,params):
n = 0
iList = numpy.zeros(shape = (1))
for line in fileinput.input([self.KVDir]):
iList.resize(n+1)
kvAs = line.split(",")
kvAx = {kvA.split('=')[0]:float(kvA.split('=')[1]) for kvA in kvAs}
iList[n] = intFn(kvAx,params)
sys.stdout.write(str(n)+"\r")
sys.stdout.flush()
n+=1
return iList
def simulate(self,nTrueDir,inputKVDir,outputWeightDir,iList,iMax):
nTrueList = [((1.0/(iList.shape[0]))*(iList.sum(0)))]
numpy.save(nTrueDir,nTrueList)
wList=iList[:]/iMax
wnList=numpy.zeros(shape=(wList.shape[0]))
for wn in range(len(wList)):
if wList[wn]>random():
wnList[wn] = 1
numpy.save(outputWeightDir,wnList)
def intFn(kVars,params): # Do not change the name of this function
sinTh = kVars['y']/(numpy.sqrt(kVars['y']**2+(1000.)**2))
I = 4*((numpy.sin((numpy.pi*.7*sinTh)/.0006)/((.7*sinTh)/.0006))**2)*numpy.cos((numpy.pi*1.2*sinTh)/.0006)**2
if not math.isnan(I):
return I
else:
print 'Hello'
return 0.0
'''
sinTh = kVars['y']/(numpy.sqrt(kVars['y']**2+(params['R0'])**2))
A1 = numpy.complex(params['A1r'],params['A1i'])*numpy.e**(((-numpy.pi*params['p']*sinTh)/.0006)*1j)
A2 = numpy.complex(params['A2r'],params['A2i'])*numpy.e**(((numpy.pi*params['p']*sinTh)/.0006)*1j)
return (A1+A2)*numpy.conjugate(A1+A2)
'''
def simFn():
"""
This is the function that will do the actual simulating. Fill out the filepaths below.
"""
nTrueDir="./data/nTrueSF.npy"#Location to save the nTrue File
inputKVDir="./data/flatY.txt"#Loaction of the Generated MC KV text File
outputWeightDir="./data/wnListSF.npy"#Location where the weighted mask file will be saved
iList = numpy.load("./data/iListSF.npy")#Location of the list of intensities.
iMax = iList.max()
print iMax
gS.simulate(nTrueDir,inputKVDir,outputWeightDir,iList,iMax)
inputKVDir="./data/FlatY.txt"#Loaction of the Generated MC KV File(Same as above)
gS = generalSim(KVDir = inputKVDir)
if sys.argv[1] == "i":
numpy.save("./data/iListSF.npy",gS.calcIList({'A2r': 186.55622562665766, 'R0': 1000.0, 'A1r': 186.5549385015023, 'p': 1.2010987369259563, 'A2i': 0.0, 'A1i': 0.4681942082158097}))
elif sys.argv[1] == "s":
simFn()
此外,您必须在命令行中通过传递参数 i
或 s
来运行此文件,或者直接从脚本中删除可忽略的行:
if sys.argv[1] == "i":
numpy.save("./data/iListSF.npy",gS.calcIList({'A2r': 186.55622562665766, 'R0': 1000.0, 'A1r': 186.5549385015023, 'p': 1.2010987369259563, 'A2i': 0.0, 'A1i': 0.4681942082158097}))
elif sys.argv[1] == "s":
simFn()
或者你可以改变你的代码如下添加一个额外的变量作为runmode
,你可以通过它设置实际的运行模式。
import numpy
import os, sys
import math
import fileinput
from random import random
######
run_mode = "s" # or you can change it to "i"
######
class generalSim (object):
def __init__(self,KVDir):
self.KVDir = KVDir
def calcIList(self,params):
n = 0
iList = numpy.zeros(shape = (1))
for line in fileinput.input([self.KVDir]):
iList.resize(n+1)
kvAs = line.split(",")
kvAx = {kvA.split('=')[0]:float(kvA.split('=')[1]) for kvA in kvAs}
iList[n] = intFn(kvAx,params)
sys.stdout.write(str(n)+"\r")
sys.stdout.flush()
n+=1
return iList
def simulate(self,nTrueDir,inputKVDir,outputWeightDir,iList,iMax):
nTrueList = [((1.0/(iList.shape[0]))*(iList.sum(0)))]
numpy.save(nTrueDir,nTrueList)
wList=iList[:]/iMax
wnList=numpy.zeros(shape=(wList.shape[0]))
for wn in range(len(wList)):
if wList[wn]>random():
wnList[wn] = 1
numpy.save(outputWeightDir,wnList)
def intFn(kVars,params): # Do not change the name of this function
sinTh = kVars['y']/(numpy.sqrt(kVars['y']**2+(1000.)**2))
I = 4*((numpy.sin((numpy.pi*.7*sinTh)/.0006)/((.7*sinTh)/.0006))**2)*numpy.cos((numpy.pi*1.2*sinTh)/.0006)**2
if not math.isnan(I):
return I
else:
print 'Hello'
return 0.0
'''
sinTh = kVars['y']/(numpy.sqrt(kVars['y']**2+(params['R0'])**2))
A1 = numpy.complex(params['A1r'],params['A1i'])*numpy.e**(((-numpy.pi*params['p']*sinTh)/.0006)*1j)
A2 = numpy.complex(params['A2r'],params['A2i'])*numpy.e**(((numpy.pi*params['p']*sinTh)/.0006)*1j)
return (A1+A2)*numpy.conjugate(A1+A2)
'''
def simFn():
"""
This is the function that will do the actual simulating. Fill out the filepaths below.
"""
nTrueDir="./data/nTrueSF.npy"#Location to save the nTrue File
inputKVDir="./data/flatY.txt"#Loaction of the Generated MC KV text File
outputWeightDir="./data/wnListSF.npy"#Location where the weighted mask file will be saved
iList = numpy.load("./data/iListSF.npy")#Location of the list of intensities.
iMax = iList.max()
print iMax
gS.simulate(nTrueDir,inputKVDir,outputWeightDir,iList,iMax)
inputKVDir="./data/FlatY.txt"#Loaction of the Generated MC KV File(Same as above)
gS = generalSim(KVDir = inputKVDir)
####
if run_mode == "i":
numpy.save("./data/iListSF.npy",gS.calcIList({'A2r': 186.55622562665766, 'R0': 1000.0, 'A1r': 186.5549385015023, 'p': 1.2010987369259563, 'A2i': 0.0, 'A1i': 0.4681942082158097}))
elif run_mode == "s":
simFn()
####
关于Python:无法导入名称/IndexError:列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593716/
我不能解决这个问题。和标题说的差不多…… 如果其他两个范围/列中有“否”,我如何获得范围或列的平均值? 换句话说,我想计算 A 列的平均值,并且我有两列询问是/否问题(B 列和 C 列)。我只希望 B
我知道 python 2to3 将所有 xrange 更改为 range 我没有发现任何问题。我的问题是关于它如何将 range(...) 更改为 list(range(...)) :它是愚蠢的,只是
我有一个 Primefaces JSF 项目,并且我的 Bean 注释有以下内容: @Named("reportTabBean") @SessionScoped public class Report
在 rails3 中,我在模型中制作了相同的范围。例如 class Common ?" , at) } end 我想将公共(public)范围拆分为 lib 中的模块。所以我试试这个。 module
我需要在另一个 View 范围 bean 中使用保存在 View 范围 bean 中的一些数据。 @ManagedBean @ViewScoped public class Attivita impl
为什么下面的代码输出4?谁能给我推荐一篇好文章来深入学习 javascript 范围。 这段代码返回4,但我不明白为什么? (function f(){ return f(); functio
我有一个与此结构类似的脚本 $(function(){ var someVariable; function doSomething(){ //here } $('#som
我刚刚开始学习 Jquery,但这些示例对我帮助不大...... 现在,以下代码发生的情况是,我有 4 个表单,我使用每个表单的链接在它们之间进行切换。但我不知道如何在第一个函数中获取变量“postO
为什么当我这样做时: function Dog(){ this.firstName = 'scrappy'; } Dog.firstName 未定义? 但是我可以这样做: Dog.firstNa
我想打印文本文件 text.txt 的选定部分,其中包含: tickme 1.1(no.3) lesson1-bases lesson2-advancedfurther para:using the
我正在编写一些 JavaScript 代码。我对这个关键字有点困惑。如何在 dataReceivedHandler 函数中访问 logger 变量? MyClass: { logger: nu
我有这个代码: Public Sub test() Dim Tgt As Range Set Tgt = Range("A1") End Sub 我想更改当前为“A1”的 Tgt 的引
我正忙于此工作,以为我会把它放在我们那里。 该数字必须是最多3个单位和最多5个小数位的数字,等等。 有效的 999.99999 99.9 9 0.99999 0 无效的 -0.1 999.123456
覆盖代码时: @Override public void open(ExecutionContext executionContext) { super.open(executio
我想使用 preg_match 来匹配数字 1 - 21。我如何使用 preg_match 来做到这一点?如果数字大于 21,我不想匹配任何东西。 example preg_match('([0-9]
根据docs range函数有四种形式: (range) 0 - 无穷大 (range end) 0 - 结束 (range start end)开始 - 结束 (range start end st
我知道有一个UISlider,但是有人已经制作了RangeSlider(用两个拇指吗?)或者知道如何扩展 uislider? 最佳答案 我认为你不能直接扩展 UISlider,你可能需要扩展 UICo
我正在尝试将范围转换为列表。 nums = [] for x in range (9000, 9004): nums.append(x) print nums 输出 [9000] [9
请注意:此问题是由于在运行我的修饰方法时使用了GraphQL解析器。这意味着this的范围为undefined。但是,该问题的基础知识对于装饰者遇到问题的任何人都是有用的。 这是我想使用的基本装饰器(
我正在尝试创建一个工具来从网页上抓取信息(是的,我有权限)。 到目前为止,我一直在使用 Node.js 结合 requests 和 Cheerio 来拉取页面,然后根据 CSS 选择器查找信息。我已经
我是一名优秀的程序员,十分优秀!