我有一个python脚本,我希望大致这样做:
将一些粒子位置调用到数组中
在所有512 ^ 3个位置上运行算法以将它们分配到NxNxN矩阵
将该矩阵反馈给python
使用python中的绘图来可视化矩阵(即mayavi)
首先我必须连续编写它,但理想情况下我想并行化第2步以加速计算.什么工具/策略可能会让我开始.我知道Python和Fortran很好但不太关于如何将这两个连接到我的特定问题.目前我正在Fortran中完成所有工作,然后加载我的python程序 - 我想立刻完成所有工作.我听说过py2f,但是在我走下一个特定的兔子洞之前,我希望得到经验丰富的人的意见.谢谢
编辑:我想要平行的东西是"令人尴尬的平行",因为它只是一个N粒子循环,我想尽快通过这个循环.
我知道你可以通过简单的查询得到所有属性的列表和所有人的列表:
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*给出所有数量?在任何情况下,我不仅要求人或他们的已知属性,而且要为每个人提供所有可能的值.
我想复制这个轴(见图),我有一系列1-10的值 - 这是什么格式,如何在matplotlib中实现?

我对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) 我试图在我的以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;
}
我有一个程序,在第一个子程序(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) 我正在使用查询输出维基百科中列出的所有人的影响(如果可能).我正在使用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)
问题在于受影响的输出包括类型和政治意识形态之类的东西.我希望把它限制在"只输出"人"与人谁被那些人的影响".提前致谢.
我有一个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.我做错了吗?