小编Ale*_*lex的帖子

如何使用javascript预先缓存图像以便快速查看?

我有一个网页,我希望用户在将鼠标放在图像的某个部分上时看到新图像.我用了一张图片地图.

<img src="pic.jpg" usemap="#picmap" />
<map id="picmap" name="picmap"><area shape="rect" coords ="10,20,30,40"
onMouseOver="mouse_on_write('mouse is on spot')"
onMouseOut="mouse_off('mouse is off spot')"
href="http://www....html" target="_blank" />
</map>
<p id="desc"></p>
Run Code Online (Sandbox Code Playgroud)

在标题中我定义了这些函数:

 <script type="text/javascript">
 function mouse_off(txt)
    {
    document.getElementById("desc").innerHTML=txt;
    document.p1.src="pic.jpg";
    }
 function mouse_on_write(txt)
    {
    document.getElementById("desc").innerHTML=txt;
    document.p1.src="pic2.jpg";
  </script>
Run Code Online (Sandbox Code Playgroud)

它有效,但速度很慢.将鼠标放在第二张图像上时,需要几秒钟才能显示; 我的临时解决方案是大幅减小图像的大小,因为它们很大(现在它们快速切换为2.5mb,但仍然不是无缝的). 如何在不降低图像质量的情况下使图像切换更加无缝? 在第二个想法,我意识到我也可以只显示两个图像,小规模和大规模,并在鼠标上,他们会切换位置; 我该怎么做?这会减少滞后吗?

html javascript

16
推荐指数
3
解决办法
4万
查看次数

交互式数据语言,IDL:有人关心吗?

有人使用一种名为Interactive Data Language,IDL的语言吗?它很受科学家欢迎.我认为这是一种糟糕的语言,因为它是专有的(运行它的每个终端必须购买昂贵的许可证)并且它具有最小的支持(尝试搜索IDL,语言,现在在堆栈上).我试图说服我的同事停止使用它并学习C/C++/Python/Fortran/Java/Ruby.有没有人知道甚至关心IDL足以对它有意见?你怎么看呢?我应该告诉我的同事现在不要浪费时间吗?我怎么能说服他们?

编辑:人们会得到我不知道或使用IDL的印象.另外,我说IDL的支持很少,这在某种意义上是正确的,所以我必须澄清科学图书馆确实很大.我一直使用IDL,但这正是问题:我只使用IDL,因为同事使用它.IDL使用的文件格式为.sav,只能在IDL中打开.所以我必须使用IDL来处理这些数据并将数据传回给同事,但我知道我会用另一种语言更有效率.这就像有人在电子邮件附件中向您发送微软word文件,如果您不明白它有多么错,那么您可能会写太多单词而没有足够的代码并且您购买了Microsoft Word.

编辑:作为IDL的替代品,Python很受欢迎.以下是AstroBetter 的IDL优缺点列表(以及缺点):

IDL的优点

  • 成熟的许多数字和天文库可用
  • 广泛的天文用户群
  • 数字方面与语言本身很好地融合
  • 许多本地用户都有丰富的经验
  • 小阵列的速度更快
  • 安装更简单
  • 好的,统一的文档
  • 标准GUI运行/调试工具(IDLDE)
  • 单一小部件系统(无需担心选择或学习)
  • 保存/恢复功能
  • 使用关键字参数作为标志更方便

IDL的缺点

  • 适用范围狭窄,不适合一般编程
  • 大型阵列较慢
  • 阵列功能不那么强大
  • 表支持差
  • 使用C或Fortran扩展的能力有限,这种扩展难以分发和支持
  • 昂贵的,有时与没有或无法负担许可证的其他人合作的问题.
  • 封闭源(只有RSI可以修复bug)
  • 与IRAF任务集成非常尴尬
  • 内存管理更加尴尬
  • 单个小部件系统(如果在另一个框架内工作则无用)
  • 绘图:
    • 对符号和数学文本的尴尬支持
    • 许多字体系统,可移植性问题(v5.1有所缓解)
    • 不是灵活的或可扩展的
    • 绘图窗口本质上不是交互式的(例如,平移和缩放)

Python的优点

  • 非常通用和强大的编程语言,但易于学习.强大但可选的面向对象编程支持
  • 非常大的用户和开发人员社区,非常广泛和广泛的库基础
  • 可以使用C,C++或Fortran进行扩展,提供可移植的分发机制
  • 自由; 非限制性许可; 开源
  • 成为天文学的标准脚本语言
  • 易于使用IRAF任务
  • STScI应用程序的基础
  • 更一般的阵列功能
  • 更快适用于大型阵列,更好地支持内存映射
  • 提供许多书籍和在线文档资源(针对语言及其库)
  • 更好地支持表结构
  • 绘制
    • 框架(matplotlib)更具可扩展性和通用性
    • 更好的字体支持和可移植性(只有一种方法可以做到)
    • 可用于许多窗口框架(GTK,Tk,WX,Qt ......)
    • 标准绘图功能独立于所使用的框架
    • 图可嵌入其他GUI中
    • 更强大的图像处理(多个同时LUTS,可选的重采样/重新缩放,alpha混合等)
  • 支持许多小部件系统
  • 对于为Python开发的功能具有强大的本地影响力

Python的缺点

  • 更多要单独安装的项目
  • 在天文学界并不被广泛接受(但支持明显增长)
  • 科学图书馆不够成熟:
    • 文档不完整,不统一
    • 在天文图书馆和公用事业方面并不那么深刻
    • 并非所有IDL数值库函数都在Python中具有相应的功能
  • 一些数字结构与语言不完全一致(或者比IDL稍微不方便)
  • 数组索引约定"向后"
  • 小阵列性能较慢
  • 没有标准的GUI运行/调试工具
  • 支持许多小部件系统(关于选择的焦虑)
  • 当前缺乏与IDL中的SAVE/RESTORE相当的功能
  • matplotlib还没有所有IDL 2-D绘图功能的等价物(例如,表面图)
  • 使用关键字参数作为标记不太方便
  • 绘图:
    • 相对不成熟,仍在继续发展
    • 缺少一些情节类型(例如,表面) …

astronomy idl-programming-language

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

Python绘图:如何让matplotlib.pyplot停止强制标记的样式?

我试图用matplotlib在Python中绘制一堆数据点(数千个),所以我需要每个标记都非常小而精确.如何获得最小的最简单的标记?我使用此命令绘制我的数据:

 matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')
Run Code Online (Sandbox Code Playgroud)

然后我可以用它来查看它pl.show()然后保存它.或者直接plt.savefig('filename.ps')在代码中使用来保存它.问题是这样的:当我pl.show()用来查看GUI中的文件时,它看起来很小,带有小的黑色标记,但是当我从show()GUI 保存到文件或直接使用savefig然后查看ps我创建的它看起来不同!每个标记都在它周围获得了一点蓝色光环(好像它从每个点开始将它们与默认的蓝线连接起来,但没有)并且样式都是错误的.保存时为什么会改变风格?如何阻止python强制标记的样式?是的,我已经看过一些像CairoPlot这样的替代软件包,但我现在想继续使用matplotlib.

更新:原来,保存为PNG首先使颜色变成好的,但它迫使图像的转换,当我想再次将其保存为.ps更高版本(包含在PDF),然后我失去质量.如何保留文件的矢量性质并获得正确的格式?

python coding-style matplotlib

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

一个简单的Python SWIG错误问题

我试图让Python运行swig来做C/C++.我在这里运行教程,'构建一个python模块'.当我打电话的时候

gcc -c example.c example_wrap.c -I /my_correct_path/python2.5
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

my_correct_path/python2.5/pyport.h:761:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
example_wrap.c: In function 'SWIG_Python_ConvertFunctionPtr':
example_wrap.c:2034: warning: initialization discards qualifiers from pointer target type
example_wrap.c: In function 'SWIG_Python_FixMethods':
example_wrap.c:3232: warning: initialization discards qualifiers from pointer target type
Run Code Online (Sandbox Code Playgroud)

它确实创建了一个example.o文件,但它不起作用.我在使用python2.5而不是2.1,例如,这是一个问题吗?错误(其他一切只是一个'警告')说错误的平台.这是一台64位的机器; 这是一个问题吗?我的gcc配置错误了吗?我如何通过这个?

更新:我还有问题.我如何实际实现这个"修复"?

python swig

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

Python Pandas 合并(和加入)是否无法按后缀参数重命名列?

我正在按关键列顺序合并一些数据框,但我发现这些列没有按预期使用后缀参数重命名。我使用的是 Python 3.5 和 Panadas 0.19.2。

import pandas as pd
df0 = pd.DataFrame({'serial_num': ['01', '02', '03'], 'vals': ['A2', 'A3', 'A6']})
df1 = pd.DataFrame({'serial_num': ['01', '02', '03'], 'vals': ['B2', 'B3', 'B6']})
df2 = pd.DataFrame({'serial_num': ['01', '02', '03'], 'vals': ['C2', 'C3', 'C6']})

df_01 = pd.merge(df0, df1, on="serial_num", suffixes=("_df0","_df1"), copy=True)
print(df_01.columns)
df_012 = pd.merge(df_01, df2, on="serial_num", suffixes=("_foobar","_df2"), copy=True)
print(df_012.columns)
Run Code Online (Sandbox Code Playgroud)

结果是:

Index(['serial_num', 'vals_df0', 'vals_df1'], dtype='object')
Index(['serial_num', 'vals_df0', 'vals_df1', 'vals'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为关于合并Pandas 文档没有建议,这应该是结果。的预期结果print(df_012.columns)Index(['serial_num', 'vals_df0_foobar', 'vals_df1_foobar', 'vals_df2'], dtype='object')。看起来数据结果是正确的。我试过几件事情,包括 …

python merge dataframe python-3.x pandas

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

C Shell:如何使用非命令行参数执行程序?

我的$ SHELL是tcsh.我想运行ac shell脚本,它会多次调用程序,每次更改一些参数.我需要调用的程序是在Fortran中.我不想编辑它.程序只有在执行后才会获取参数,但不会在命令行中获取.在脚本中调用程序后,程序将获得控制权(这是我当前卡住的地方,我永远无法离开,因为脚本在程序进程停止之后才会执行任何操作); 此时我需要传递一些变量,然后经过几次迭代后我需要从程序中按ctrl-c继续编写脚本.

如何才能做到这一点?

unix shell scripting csh

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

最好的Awk命令

我发现AWK非常有用.这是我用来操纵数据的一个班轮.

ls | awk '{ print "awk " "'"'"'"  " {print $1,$2,$3} " "'"'"'"  " " $1 ".old_ext > " $1    ".new_ext"  }' > file.csh
Run Code Online (Sandbox Code Playgroud)

我用这个AWK制作了一个脚本文件,它可以重命名一些文件,只打印出选择性列.有人知道更好的方法吗?什么是最好的AWK一个衬垫或聪明的操作?

awk

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

你如何构造一个适合numpy排序的数组?

我需要同时对两个数组进行排序,或者更确切地说,我需要对其中一个数组进行排序,并在排序时将其关联数组的相应元素与它一起使用.那就是如果数组是[(5,33),(4,44),(3,55)]并且我按第一轴排序(标记为dtype ='alpha')那么我想:[(3.0,55.0 )(4.0,44.0)(5.0,33.0)].这些都是非常大的数据集,我需要先排序(对于nlog(n)速度),然后再进行其他操作.我不知道如何以正确的方式合并我的两个单独的数组,以使排序算法工作.我认为我的问题很简单.我尝试了三种不同的方法:

import numpy
x=numpy.asarray([5,4,3])
y=numpy.asarray([33,44,55])

dtype=[('alpha',float), ('beta',float)]

values=numpy.array([(x),(y)])
values=numpy.rollaxis(values,1)
#values = numpy.array(values, dtype=dtype)
#a=numpy.array(values,dtype=dtype)
#q=numpy.sort(a,order='alpha')
print "Try 1:\n", values

values=numpy.empty((len(x),2))
for n in range (len(x)):
        values[n][0]=y[n]
        values[n][1]=x[n]
print "Try 2:\n", values
#values = numpy.array(values, dtype=dtype)
#a=numpy.array(values,dtype=dtype)
#q=numpy.sort(a,order='alpha')

###
values = [(x[0], y[0]), (x[1],y[1]) , (x[2],y[2])]
print "Try 3:\n", values
values = numpy.array(values, dtype=dtype)
a=numpy.array(values,dtype=dtype)
q=numpy.sort(a,order='alpha')

print "Result:\n",q
Run Code Online (Sandbox Code Playgroud)

我评论了第一个和第二个版本,因为它们会产生错误,我知道第三个版本会起作用,因为这反映了我在RTFM时所看到的内容.给定数组x和y(非常大,只显示示例)如何构造可以被numpy.sort正确调用的数组(称为值)?

***Zip很棒,谢谢.奖金问题:我怎样才能将排序后的数据再次解压缩成两个数组?

python arrays algorithm numpy

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