小编Dan*_*ton的帖子

朱莉娅:一起添加匿名功能

如果我定义一些匿名函数a(x)b(x)as

a = x -> x^2
b = x -> 2x
Run Code Online (Sandbox Code Playgroud)

在一些循环的持续时间内,将递归问题添加到一起会有所帮助:

for i=1:5
    a = x -> a(x) + b(x)
end
Run Code Online (Sandbox Code Playgroud)

其目标是将每个循环迭代内部表示为

a = x -> x^2 + 2x
a = x -> x^2 + 2x + x^2 + 2x
a = x -> x^2 + 2x + x^2 + 2x + x^2 + 2x
...
Run Code Online (Sandbox Code Playgroud)

但是,这会失败并返回一些错误.我假设它是因为调用new a(x)被解释为:a(2) = 2 -> x^2 + x^2 + ... + x^2 + 2x

julia> a(2)
ERROR: …
Run Code Online (Sandbox Code Playgroud)

recursion anonymous-function julia

8
推荐指数
2
解决办法
360
查看次数

为什么 rm 命令不删除文件?

当我今天访问我的 Ubuntu 16.04 服务器并想要删除文件“test2”时,它根本没有被删除!

我用过

rm test2
Run Code Online (Sandbox Code Playgroud)

rm -f test2
Run Code Online (Sandbox Code Playgroud)

但它仍然没有删除它,您可以在这里阅读:

root@icinga:~# ls
basket  desd.save  packages  scripts  src  test2  test5  unused
root@icinga:~# rm test2
root@icinga:~# ls
basket  desd.save  packages  scripts  src  test2  test5  unused
root@icinga:~# rm -f test2
root@icinga:~# ls
basket  desd.save  packages  scripts  src  test2  test5  unused
Run Code Online (Sandbox Code Playgroud)

我也尝试过删除其他文件,但没有成功!

我是“test2”的所有者,使用ls -la test2你可以看到我有读写这个文件的权限!

root@icinga:~# ls -la test2
-rw-r--r-- 1 root root 9 Nov 11 20:33 test2
Run Code Online (Sandbox Code Playgroud)

使用which rm它说/bin/rm

root@icinga:~# which rm
/bin/rm
Run Code Online (Sandbox Code Playgroud)

而且也不\rm …

bash shell rm ubuntu-16.04

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

用凹域域对一组点进行三角测量

建立

给定凸包内的一些节点集,假设该域包含一个或多个凹面区域:

具有凹陷区域的点分布

其中蓝点是点,黑线表示域.假设点被保持为points长度的2D数组n,其中n是点对的数量.

然后让我们使用类似scipy.spatial的Delaunay方法对点进行三角测量:

域内的三角测量

如您所见,人们可能会遇到穿过域的三角形的创建.

删除任何跨越域外的三角形的好算法方法是什么?理想但不一定,单面边缘仍然保留域形状(即,没有去除三角形的主要间隙).


由于我的问题似乎继续得到大量的活动,我想跟进我目前正在使用的应用程序.

假设您已定义边界,则可以使用光线投射算法来确定多边形是否在域内.

去做这个:

  1. 取每个多边形的质心为C_i = (x_i,y_i).
  2. 然后,想象一条线L = [C_i,(+inf,y_i)]:也就是说,一条横跨东部超过域末端的线.
  3. 对于边界s_i中的每个边界段S,检查交叉点L.如果是,请向内部计数器添加+1 intersection_count; 否则,什么都不添加.
  4. 后之间的所有交叉点的数量Ls_i for i=1..N计算:

    if intersection_count % 2 == 0:
        return True # triangle outside convex hull
    else:
        return False # triangle inside convex hull
    
    Run Code Online (Sandbox Code Playgroud)

如果没有明确定义边界,我发现将形状"映射"到布尔数组并使用邻居跟踪算法来定义它是有帮助的.请注意,此方法假设一个实体域,您需要对其中包含"漏洞"的域使用更复杂的算法.

algorithm delaunay triangulation convex-hull

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

格式:在字符输出中添加尾随空格以左对齐

如何将字符串格式化为具有恒定宽度左对齐?有Aw格式化程序,其中w表示所需的字符输出宽度,但它会在 if 前面添加空格w > len(characters),而不是附加它们。

当我尝试时

44 format(A15)
   print 44, 'Hi Stack Overflow'
Run Code Online (Sandbox Code Playgroud)

我明白了

>        Hi Stack Overflow<
Run Code Online (Sandbox Code Playgroud)

代替

>Hi Stack Overflow        <
Run Code Online (Sandbox Code Playgroud)

有没有简单的 Fortran 格式化解决方案可以解决这个问题?

fortran string-formatting fortran90

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

特定文件中的 callgrind 输出

我想将 callgrind 的输出重定向到文件名call_grind.txt,但是每当我尝试这样做时,都会生成一个文件,但该文件中没有输出。

例如:

valgrind --tool=callgrind --callgrind-out-file=/tmp/call_grind.txt <program name>
Run Code Online (Sandbox Code Playgroud)

另外,callgrind.out.<pid>我的系统中没有任何文件通常应该位于它的位置。

根据我的理解,如果我运行以下命令,它应该创建callgrind.out.<pid> file

valgrind --tool=callgrind <program name>
Run Code Online (Sandbox Code Playgroud)

那么,如何使用该工具以及如何读取输出文件?

valgrind callgrind

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

Julia+JuMP:函数参数数量可变

我正在尝试使用 JuMP 来解决非线性问题,其中变量的数量由用户决定 - 也就是说,在编译时未知。

为了实现这一点,该@NLobjective行如下所示:

@eval @JuMP.NLobjective(m, Min, $(Expr(:call, :myf, [Expr(:ref, :x, i) for i=1:n]...)))
Run Code Online (Sandbox Code Playgroud)

例如,如果n=3,编译器将该行解释为与以下内容相同:

@JuMP.NLobjective(m, Min, myf(x[1], x[2], x[3]))
Run Code Online (Sandbox Code Playgroud)

问题是它@eval仅在全局范围内有效,并且当包含在函数中时,会引发错误。

我的问题是:如何在函数的本地编译范围内完成相同的功能(使用可变数量的参数@NLobjective进行调用)?myfx[1],...,x[n]

def testme(n)
    myf(a...) = sum(collect(a).^2)

    m = JuMP.Model(solver=Ipopt.IpoptSolver())

    JuMP.register(m, :myf, n, myf, autodiff=true)
    @JuMP.variable(m, x[1:n] >= 0.5)

    @eval @JuMP.NLobjective(m, Min, $(Expr(:call, :myf, [Expr(:ref, :x, i) for i=1:n]...)))
    JuMP.solve(m)
end

testme(3)
Run Code Online (Sandbox Code Playgroud)

谢谢!

julia ipopt julia-jump

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

在 Python 中发送带有颜色格式的电子邮件

我有下面的 Python 代码,用于从 file 的内容向我的 ID 发送电子邮件filename。我正在尝试发送带有文本颜色格式的电子邮件。

有什么想法请指教。

def ps_Mail():
    filename = "/tmp/ps_msg"
    f = file(filename)
    if os.path.exists(filename) and os.path.getsize(filename) > 0:
        mailp = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE)
        msg = MIMEMultipart('alternative')
        msg['To'] = "karn@abc.com"
        msg['Subject'] = "Uhh!! Unsafe rm process Seen"
        msg['From'] = "psCheck@abc.com"
        msg1 = MIMEText(f.read(),  'text')
        msg.attach(msg1)
        mailp.communicate(msg.as_string())
ps_Mail()
Run Code Online (Sandbox Code Playgroud)

html python mime

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

将参数传递给变量引用的函数

问题

我正在为程序输入文件编写一个文件解析器,它可以在某种程度上解构为字典:也就是说,在输入文件中,存在包含"键值对"的多级"dicts".

我有一个关键字字典,它告诉read函数要读取哪些键,以及如何解析键值.

例如,您可以在下面的代码摘录中看到,在datum读取时,应该使用函数解析该值HelperFunctions.split_to_floats:

'datum': HelperFunctions.split_to_floats
Run Code Online (Sandbox Code Playgroud)

目标

我想要做的是能够传递参数,这样我就不必为每个可能类型的ie值分隔符进行函数排列.

例如,要重构keywords字典,例如:

keywords = {
    '_root': str,
    'units': HelperFunctions._split(LINE,to=str,delim=','),
    'datum': HelperFunctions._split(LINE,to=float,delim=' ')
    }
Run Code Online (Sandbox Code Playgroud)

代码示例

我现在拥有的完整,可行的演示如下:

class HelperFunctions:

    def comma_split_to_strings(string:str) -> list:
        # Returns a list of strings
        return string.split(',')

    def split_to_floats(string:str) -> list:
        # Returns a 1D list of floats
        return list(map(float,string.split()))


keywords = {
    '_root': str,
    'units': HelperFunctions.comma_split_to_strings,
    'datum': HelperFunctions.split_to_floats
    }

card = {}
key = 'units'
value = 'Pa,kg,km'

if key in keywords: …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

为什么Python的len(readlines)不等于Bash的'wc -l'命令?

对于一些大文件,

lines_a = len(fa.readlines())
print(lines_a)
Run Code Online (Sandbox Code Playgroud)

而对于Bash(在Mac上):

wc -l
Run Code Online (Sandbox Code Playgroud)

结果是不同的!

可能的原因是什么?

python bash

0
推荐指数
1
解决办法
413
查看次数