- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近编写了这段代码来梳理数据点,它对于小数据集效果很好。然而,每当数据集变得太大时,我得到的都是垃圾输出和 pycharm 控制台中的一条消息,内容为 !需要处理的输出太多
。那么最大行输出似乎在 55,000 行左右。
这段代码的目的是分析 file1 中的坐标与 file2 中所有元素的接近程度。然后返回任何共享邻近度的坐标匹配结果。正如您将在下面看到的,我编写了一个嵌套的 for 循环来执行此操作,我理解这可能是一种暴力策略,因此这可能是稍后获取错误消息的问题?
代码如下:
import numpy as np
import math as ma
filename1 = "C:\Users\Justin\Desktop\file1.data"
data1 = np.genfromtxt(filename1,
skip_header=1,
usecols=(0, 1))
#dtype=[
#("x1", "f9"),
#("y1", "f9")])
#print "data1", data1
filename2 = "C:\Users\Justin\Desktop\file2.data"
data2 = np.genfromtxt(filename2,
skip_header=1,
usecols=(0, 1))
#dtype=[
#("x2", "f9"),
#("y2", "f9")])
#print "data2",data2
def d(a,b):
d = ma.acos(ma.sin(ma.radians(a[1]))*ma.sin(ma.radians(b[1]))
+ma.cos(ma.radians(a[1]))*ma.cos(ma.radians(b[1]))* (ma.cos(ma.radians((a[0]-b[0])))))
return d
results = open("results.txt", "w")
for coor1 in data1:
for coor2 in data2:
n=0
a = [coor1[0], coor1[1]]
b = [coor2[0], coor2[1]]
#print "a", a
#print "b", b
if d(a, b) < 0.07865: # if true what happens
results.write("\t".join([str(coor1), str(coor2), "True", str(d)]) + "\n")
else:
results.write("\t".join([str(coor1), str(coor2), "False", str(d)]) + "\n")
results.close()
理想情况下,当我开始交叉检查每个超过 500,000 个坐标的数据文件时,我不会遇到此问题,因为我怀疑其中许多文件是否会共享很大的接近度。
但是发布此内容有两个原因(同样是这样)。首先,与任何可以使用它的人分享此代码,因为它已经被证明是分析任意球形空间中的数据或坐标的强大工具。其次,看看是否有人对如何提高效率并帮助我解决错误消息有任何建议?
最具体地说,当我的邻近限制是大量分离以及读取元素“a”和“b”时,会出现错误消息。
我真的怀疑 pycharm 在处理超过 55,000 行输出时存在问题,但我不知道...我的猜测是我要么搞砸了代码,要么可能是 Windows 10 问题?
预先感谢您的帮助。我对此很陌生,所以任何建议肯定会有用。
最佳答案
正如 dblclik 在对该帖子的评论中提到的那样,当然有一些方法可以使您的代码更加高效,避免嵌套 for 循环的完整计算。但是,我认为这不会帮助您解决您收到的错误消息:
我不认为 PyCharm 在处理您提到的 n 行代码时存在问题,我相当怀疑,这是事实,您正在打印,即输出,你们所有人输出到 PyCharm,尤其是在打印不太近的 x y 的距离时需要内存。
我建议您不要打印结果,而是尝试将其保存到 .txt 文件或距离矩阵中。通过这种方式,您还可以保存计算的输出!
示例:将结果保存到列表
results = []
...
for coor1 in data1:
for coor2 in data2:
distance = d(a, b)
if distance < thresh:
results.append((str(coor1), str(coor2), "True", str(distance)))
else:
results.append((str(coor1), str(coor2), "False", str(distance)))
示例:保存到文本文件
results = open("results.txt", "w")
...
for coor1 in data1:
for coor2 in data2:
distance = d(a, b)
if distance < thresh:
results.write("\t".join([str(coor1), str(coor2), "True", str(distance)])+"\n")
else:
results.write("\t".join([str(coor1), str(coor2), "False", str(distance)])+"\n")
results.close()
我希望这个方法能帮助你完全运行你的脚本!
关于python - 如何高效地执行循环语句进行数据分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39153448/
1.摘要 在数据可视化、统计绘图和图表生成领域,Python 被广泛使用,其中 Matplotlib 是一个极其重要的基础三方库。本博客旨在介绍 Python 及其三方库 Matplotlib
为什么要学习pandas? numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数
0. 数据说明 本项目所用数据集包含了一个家庭6个月的用电数据,收集于2007年1月至2007年6月。 这些数据包括有功功率、无功功率、电压、电流强度、分项计量1(厨房)、分项计量2(洗衣房
由于我现在不知道自己在做什么,所以我的措辞听起来很有趣。但是说真的,我需要学习。 我面临的问题是提出一种方法(模型)来估计软件程序的工作方式:即运行时间和最大内存使用量。我已经拥有了大量数据。此数据集
我在 PostgreSQL 中有一个表,其结构和数据如下: Question | Answer | Responses ------------------------------
numbers = LabelEncoder() State_Data['Quality'] = numbers.fit_transform(State_Data['Quality Paramet
我一直在尝试解决这个问题: 我有一组数据点,对应于一组时间值。即 values =[1,2,3,4,5,6,7,8,4] times = [0.1,0.2,0.3,0.4]... 等等,这是一个示例速
哔哔一下 雪中悍刀行兄弟们都看过了吗?感觉看了个寂寞,但又感觉还行,原谅我没看过原著小说~ 豆瓣评分5.8,说明我还是没说错它的。 当然,这并不妨碍它波播放量嘎嘎上涨,半个月25亿播放,平均一集一个亿
在 Pandas 中是否有任何可重用的数据分析代码,可以在 html 输出中给出结果。 我已经尝试过来自以下链接的命令,但没有一个输出是 html 格式。 https://kite.com/blog/
吴京近年拍的影视都是非常富有国家情怀的,大人小孩都爱看,每次都是票房新高,最新的长津湖两部曲大家都有看吗,第一步还可以,第二部水门桥也不差,截止目前已经36.72亿票房。 某眼评分9.6,某瓣评分7.
我有一个 .csv 文件,其中包含来自 eBay 拍卖的以下数据: auctionid - 拍卖的唯一标识符 bidtime - 出价的时间(以天为单位),从拍卖开始 投标人 - 投标人的 eBay
目录 1、爬虫 1.1 爬取目标 1.2 分析页面 1.3 爬虫代码 1.4 结果数据
我是 pyspark 的新手,我有这个示例数据集: Ticker_Modelo Ticker Type Period Product Geography Source Unit
我是一名优秀的程序员,十分优秀!