小编Gri*_*iff的帖子

我希望Python作为前端,Fortran作为后端.我还想让fortran部分并行 - 最好的策略?

我有一个python脚本,我希望大致这样做:

  1. 将一些粒子位置调用到数组中

  2. 在所有512 ^ 3个位置上运行算法以将它们分配到NxNxN矩阵

  3. 将该矩阵反馈给python

  4. 使用python中的绘图来可视化矩阵(即mayavi)

首先我必须连续编写它,但理想情况下我想并行化第2步以加速计算.什么工具/策略可能会让我开始.我知道Python和Fortran很好但不太关于如何将这两个连接到我的特定问题.目前我正在Fortran中完成所有工作,然后加载我的python程序 - 我想立刻完成所有工作.我听说过py2f,但是在我走下一个特定的兔子洞之前,我希望得到经验丰富的人的意见.谢谢

编辑:我想要平行的东西是"令人尴尬的平行",因为它只是一个N粒子循环,我想尽快通过这个循环.

python arrays parallel-processing fortran f2py

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

如何在dpbedia中获取人员的所有属性,而不仅仅是查询特定属性

我知道你可以通过简单的查询得到所有属性的列表和所有人的列表:

select distinct ?property where {
         ?instance a <http://dbpedia.org/ontology/Person> . 
         ?instance ?property ?obj . }
Run Code Online (Sandbox Code Playgroud)

但是如何在不必输入每个数量的情况下获得一个人的所有信息?Select*不会像在SQL中那样提取所有变量.

SELECT * WHERE
{ ?p a <http://dbpedia.org/ontology/Person> .
?p <http://dbpedia.org/ontology/knownFor> ?knownFor . }
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

这只给了我这个人和已知的属性.我认为select*给出所有数量?在任何情况下,我不仅要求人或他们的已知属性,而且要为每个人提供所有可能的值.

wikipedia sparql dbpedia

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

如何制作一个非线性或对数的特定轴?

我想复制这个轴(见图),我有一系列1-10的值 - 这是什么格式,如何在matplotlib中实现?

在此输入图像描述

python plot axes matplotlib

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

为什么单个行向量不能为x [:,0] = x [0]?

我对python比较陌生,但我试图理解一些看似基本的东西.

创建一个向量:

x = np.linspace(0,2,3)
Out[38]: array([ 0.,  1.,  2.])
Run Code Online (Sandbox Code Playgroud)

现在为什么x [:,0]不是一个值参数?

IndexError: invalid index
Run Code Online (Sandbox Code Playgroud)

它必须是x [0].我有一个我正在调用的函数计算:

np.sqrt(x[:,0]**2 + x[:,1]**2 + x[:,2]**2)
Run Code Online (Sandbox Code Playgroud)

无论输入什么,为什么我不能成为现实?它有很多其他语言,它独立于数组中的其他行.也许我误解了一些基本的东西 - 对不起,如果是这样的话.我想避免放:

if len(x) == 1:
    norm = np.sqrt(x[0]**2 + x[1]**2 + x[2]**2)
else:
    norm = np.sqrt(x[:,0]**2 + x[:,1]**2 + x[:,2]**2)
Run Code Online (Sandbox Code Playgroud)

到处.当然有一种解决方法...谢谢.

编辑:使用另一种语言的一个例子是Matlab:

>> b = [1,2,3]
b =
     1     2     3 
>> b(:,1)
ans =
     1
>> b(1)
ans =

     1
Run Code Online (Sandbox Code Playgroud)

python numpy vector

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

使CSS中的代码块看起来不错

我试图在我的以Jekyll驱动的Github Pages博客中找到使我的代码块看起来不错的正确的CSS。我希望它的代码看起来像这样(我将kramdown与语法突出显示一起使用):

在此处输入图片说明

我尝试了highlight.js,但是我认为我的scss块正在覆盖格式:

pre { background-color: #D1D1D0; overflow: auto; font-family: 'Monaco', monospace; padding: 0 1em; }

code { font-family: Monaco, monospace; font-size: $base-font-size; line-height: 100%; background-color: #eee; padding: 0.2em; letter-spacing: -0.05em; word-break: normal; /border-radius: 5px;/ }

pre code { border: none; background: none; font-size: $base-font-size * 0.875; line-height: 1em; letter-spacing: normal; word-break: break-all; }

css

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

通过fortran中的子程序传递未知大小的数组(在子程序中分配的数组)

我有一个程序,在第一个子程序(CALCONE)中创建一个数组,然后我想将它传递到下一个子程序(CALCTWO),然后将其输出到主程序中的文件.我不知道在哪里放置INTENT(IN),INTENT(OUT)语句,因为数组需要分配IN子程序CALCONE(因为在我的程序中,长度是在CALCONE中确定的) - 我已经离开了我的尝试以避免混乱.有人可以帮助把他们放在正确的地方.一旦我有了模板,我就会明白它是如何运作的.谢谢.

我简化了程序,变量代表了其他无法移动的东西.我只需要一种方法在子程序之间移动一个数组,然后在主程序结束时写出来.

 program TEST
 implicit none

 integer a,b,c,d,reclen

 a = 1
 b = 2
 c = 3
 d = 4

 call CALCONE(a,b,c,d,array)

 call CALCTWO(e,f,g,h,array)

 inquire(iolength=reclen)array 
 open(unit=8,file='array_output.dat', &
   form="unformatted",access="stream")
 write(unit=8)array       
 close(unit=8)

 END PROGRAM TEST

 SUBROUTINE CALCONE(adummy,bdummy,cdummy,ddummy,arraydummy)
 IMPLICIT NONE

 integer i,j,k
 integer e,f,g,h,N
 !ALLOCATE ARRAY HERE OR IN MAIN PROGRAM?
 real*8,   allocatable  :: arraydummy(:,:)

 e = a + 1
 f = b + 1
 g = c + 1
 h = d + 1

 ! N can only be is …
Run Code Online (Sandbox Code Playgroud)

arrays fortran allocation subroutine

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

如何仅使用SPARQL将我在dbpedia中的搜索限制为"人员"

我正在使用查询输出维基百科中列出的所有人的影响(如果可能).我正在使用http://dbpedia.org/snorql/.到目前为止我的代码是:

SELECT *
WHERE {
?p a
<http://dbpedia.org/ontology/Person> .
?p <http://dbpedia.org/ontology/influenced> ?influenced.
}
Run Code Online (Sandbox Code Playgroud)

问题在于受影响的输出包括类型和政治意识形态之类的东西.我希望把它限制在"只输出"人"与谁被那些人的影响".提前致谢.

sparql dbpedia

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

循环遍历python中的NxNxN数组并替换符合条件的所有值

我有一个nxnxn矩阵,我想循环并用1E-35替换所有值<1E-35.

          for i in range(N):
              for j in range(N):
                  for k in range(N):
                      if data[i][j][k] < 1E-35:
                          data[i][j][k] = 1E-35
Run Code Online (Sandbox Code Playgroud)

似乎没有用.

编辑:我解决了.这是缩进和不正确的索引[i] [j] [k].

问题依旧:这从NxNxN数据的0到N-1循环?当我做data.min()时,我仍然得到值~1E-101,它应该是循环后的1E-35.我做错了吗?

python loops

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