小编HuS*_*Shu的帖子

加快阵列中所有可能对之间的距离

我有几个(~10 ^ 10)点的x,y,z坐标数组(这里只显示了5个)

a= [[ 34.45  14.13   2.17]
    [ 32.38  24.43  23.12]
    [ 33.19   3.28  39.02]
    [ 36.34  27.17  31.61]
    [ 37.81  29.17  29.94]]
Run Code Online (Sandbox Code Playgroud)

我想创建一个新数组,只包含d与列表中所有其他点相距至少一些距离的点.我用while循环编写了一个代码,

 import numpy as np
 from scipy.spatial import distance 

 d=0.1 #or some distance 
 i=0
 selected_points=[]
 while i < len(a):
          interdist=[]  
          j=i+1
          while j<len(a):
              interdist.append(distance.euclidean(a[i],a[j]))
              j+=1

          if all(dis >= d for dis in interdist):
              np.array(selected_points.append(a[i]))
          i+=1
Run Code Online (Sandbox Code Playgroud)

这样可行,但执行此计算需要很长时间.我读到某处while循环非常慢.

我想知道是否有人对如何加快这个计算有任何建议.

编辑:虽然我的目标是找到距离所有其他距离至少有一段距离的粒子,但我只是意识到我的代码中有一个严重的缺陷,假设我有3个粒子,我的代码执行以下操作,对于第一次迭代i,它计算距离1->2,1->3比方说1->2小于阈值距离d,因此代码抛弃粒子1 …

python numpy while-loop python-2.7

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

根据每个数组的第一个元素从嵌套数组中删除数组

我有两个嵌套数组说

a=[[1,2,3],[2,4,7],[4,2,8],[3,5,7],[6,1,2]]
b=[[1,6,7],[2,4,9],[4,3,5],[3,10,2],[5,3,2],[7,2,1]]
Run Code Online (Sandbox Code Playgroud)

我想只保留那些b第一个元素不在数组的第一个元素中共同的数组a,所以对于这两个我们应该得到

c=[[5,3,2],[7,2,1]]
Run Code Online (Sandbox Code Playgroud)

有没有办法在python中执行此操作?

python list

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

Python:Simpson法则,曲线下正面积的否定答案?

我有

y1=[  9.49110000e-004   4.74145420e-004   1.41847155e-008   3.33228420e-028
       3.76352289e-081   4.48206815e-193   0.00000000e+000   0.00000000e+000
       0.00000000e+000   0.00000000e+000   0.00000000e+000] 

x=[ 112.  111.97667396  111.90666665  111.78989038  111.62619837  
     111.41538384  111.15717866  110.85125168  110.49720654  110.09457901
    109.64283388]
Run Code Online (Sandbox Code Playgroud)

所有y值均为正,因此曲线下的面积应为正。但是当我尝试使用辛普森规则进行整合时

  from scipy.integrate import simps
  b= simps(y1, x)

  print b
Run Code Online (Sandbox Code Playgroud)

我得到-2.45630795891e-05答案。我究竟做错了什么?

python integrate scipy simpsons-rule

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

DiracDelta没有给出正确的结果

我必须在一个复杂的积分中使用dirac delta,并希望看到它如何与一个简单的情况一起工作,但它返回错误的答案.我在下面做错了什么线索?

from sympy import DiracDelta
from scipy import integrate

def f(x):
     return x*DiracDelta(x-1)

b, err = integrate.quad(f, 0, 5)    
print b
Run Code Online (Sandbox Code Playgroud)

这会返回,0.0而不应该返回.

python integrate sympy

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

标签 统计

python ×4

integrate ×2

list ×1

numpy ×1

python-2.7 ×1

scipy ×1

simpsons-rule ×1

sympy ×1

while-loop ×1