- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个高效的 Python 代码,给定一组表单中的数据点
a1 a2 a3 ... an (point 1)
b1 b2 b3 ... bn (point 2)
.
.
.
将发现其中哪些太接近(在阈值内)。
program check_closeness
implicit none
integer, parameter :: npoints = 10000, ndis = 20
real(8), parameter :: r = 1e0, maxv = 3e0, minv = 0e0
real(8), dimension(npoints,ndis) :: dis
real(8) :: start, ende
call RANDOM_NUMBER(dis)
dis = (maxv - minv) * dis + minv
call cpu_time(start)
call remove_close(npoints, ndis,dis, r)
call cpu_time(ende)
write(*,*) 'Time elapsed', ende - start
endprogram
subroutine remove_close(npoints, ndis, points, r)
implicit none
integer, intent(in) :: npoints, ndis
integer :: i, i_check
real(8), dimension(npoints, ndis), intent(in) :: points
real(8), intent(in) :: r
logical :: is_close
do i=1,npoints
is_close = .FALSE.
i_check = i
do while (.not. is_close .and. i_check < npoints)
i_check = i_check + 1
is_close = all(abs(points(i,:) - points(i_check,:)) < r)
enddo
enddo
end subroutine
这个执行需要我的电脑:
Time elapsed 1.0651889999999999
(秒)。
import numpy as np
import time
def check_close(a, r):
npoints = a.shape[0]
for i, vec1 in enumerate(a):
is_close = False
icheck = i
while (not is_close and icheck < npoints - 1):
icheck +=1
vec2 = a[icheck,:]
is_close = all(np.abs(vec1 - vec2) < r)
maxv, minv = 3, 0
a = np.random.rand(10000, 20)
a = (maxv - minv) * a + minv
r = 1e0
ini = time.time()
check_close(a, r)
fin = time.time()
print('Time elapsed {}'.format(fin - ini))
此执行需要
Time elapsed 102.60617995262146
(秒),这比 Fortran 慢得多。
import numpy as np
import time
def check_close(a, r):
for i, vec1 in enumerate(a[:-1]):
d = np.abs(a[i+1:,:] - vec1)
is_close = np.any(np.all(d < r, axis=1))
maxv, minv = 3, 0
a = np.random.rand(10000, 20)
a = (maxv - minv) * a + minv
r = 1e0
ini = time.time()
check_close(a, r)
fin = time.time()
print('Time elapsed {}'.format(fin - ini))
在这种情况下,执行需要
Time elapsed 3.4987785816192627
(秒)。由此,我想改进来自于实现的矢量化和去除了 while 循环。另一方面,当找到一个接近点时,此实现不会从停止搜索中受益。
ini = time.perf_counter()
check_close(a, r)
fin = time.perf_counter()
print('Time elapsed {}'.format(fin - ini))
测量它们,更新的时间是:
最佳答案
Numpy 是专门创建的,因为 python 非常慢。正如您所展示的,fortran 代码速度要快得多,没有太多算法差异。
所以回答你的问题:
np.abs()
的意图是什么。但它不是计算两点之间的欧几里得距离。使用
np.linalg.norm()
为了那个原因。
关于python - 为什么 Python 代码需要这么长时间才能找到数据集中的近点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66258485/
好吧,假设我有一堆光盘放在已知固定位置的飞机上。每个圆盘的半径为 1 个单位。该平面完全被一组圆盘覆盖,事实上,它被一组圆盘广泛覆盖,在某些区域覆盖了一两个数量级。我想找到仍然完全覆盖飞机的光盘子集。
我有一个涉及大量相关表的系统。考虑一个标准的类别/产品/订单/客户/订单项目场景。有些表是自引用的(如类别)。这些表都不是特别大(大约 10 万行,估计规模约为 100 万行)。我需要考虑这些数据的很
我正在学习 https://near.academy/near101/chapter-6 中的教程 其中一个步骤是运行此命令(但使用我的帐户): near call museum.testnet ad
我正在启动一个分析项目,该项目将处理数百万地理定位数据。数据可能是这样的: 编号{ 用户身份, 长, 纬度, 时间, 应用ID } 我的主要操作: 获取区域中包含的所有数据 找到属于某个userId的
在性能方面,JSON 解析需要大量时间来检索数据。在我的应用程序中,我需要从服务器获取近 10,000 条记录。在模拟器上,它立即获取数据并高效工作。但在我的 android 手机中,它需要超过2 分
任何人都可以帮助我从投影矩阵 44 获得左、右、下、上、近和远边界值吗? 最佳答案 这里是方程组的分辨率 Christian Rau引用: 对于正交矩阵: near = (1+m34)/m33;
我正在通过后台线程将 1,00,000 条记录插入到数据库中。此时,当我想要加载 Ui 屏幕时,出现内存不足错误。例如,当堆大小为 5 MB 且分配给后台线程的内存为 4 MB 时,加载 UI 屏幕需
C++如何存储近100000位的海量数字?.. 我试过使用 long long int 和 long double int..对我没有任何作用.. 有没有其他方法可以存储这么大的数字? 我希望找到大于
我是一名优秀的程序员,十分优秀!