我刚刚从MacPorts切换到HomeBrew.在安装了所有必需的XCode版本和其他软件后,我尝试使用自制软件安装python:我认为它已成功安装,但是当我这样做which python时仍然向我显示2.7.3我认为是Mountain Lion附带的版本.
which python
/usr/local/bin/python
python --version
Python 2.7.3
Run Code Online (Sandbox Code Playgroud)
所以我试着再次安装
brew install python --framework --universal
Warning: python-2.7.5 already installed, it's just not linked
Run Code Online (Sandbox Code Playgroud)
但是它说python 2.7.5已经安装而没有链接,我试着这样做 brew link python
这导致我遵循这样的信息,我不知道我应该做什么:
链接/usr/local/Cellar/python/2.7.5 ...警告:无法链接python.取消链接...
Error: Could not symlink file: /usr/local/Cellar/python/2.7.5/bin/smtpd2.py
Target /usr/local/bin/smtpd2.py already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
brew link --overwrite formula_name
To list all files that would be deleted:
brew link --overwrite --dry-run formula_name
Run Code Online (Sandbox Code Playgroud) 我正在尝试利用Zlib进行文本压缩.
例如,我有一个字符串,T='blah blah blah blah'我需要为此字符串压缩它.我S=zlib.compress(T)用来压缩它.现在我想要的是获得非二进制形式,S以便我可以解压缩T但在不同的程序中.
谢谢!
编辑:我想我有一个解决我想要的方法.这是方法:
import zlib, base64
text = 'STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW STACK OVERFLOW '
code = base64.b64encode(zlib.compress(text,9))
print code
Run Code Online (Sandbox Code Playgroud)
这使:
eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU=
Run Code Online (Sandbox Code Playgroud)
现在我可以将此代码复制到另一个程序以获取原始变量:
import zlib, base64
s='eNoLDnF09lbwD3MNcvPxD1cIHhxcAE9UKaU='
data = zlib.decompress(base64.b64decode(s))
print data
Run Code Online (Sandbox Code Playgroud)
如果您知道任何其他压缩方法可以提供与上述代码一致的更好结果,请建议.
据我所知,这不是正式不可能的,但通过切片访问列表的任意非顺序元素是否有"技巧"?
例如:
>>> L = range(0,101,10)
>>> L
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
Run Code Online (Sandbox Code Playgroud)
现在我希望能够做到
a,b = L[2,5]
Run Code Online (Sandbox Code Playgroud)
这样a == 20和b == 50
除了两个陈述之外的一种方式是愚蠢的:
a,b = L[2:6:3][:2]
Run Code Online (Sandbox Code Playgroud)
但这根本不会按不规则的间隔进行扩展.
也许使用列表理解使用我想要的索引?
[L[x] for x in [2,5]]
Run Code Online (Sandbox Code Playgroud)
我很想知道这个常见问题的推荐方法.
我正在生成具有世界规模数据的地图,然后放大到某些地区.在放大视图中,我想通过将箭头从框的中心指向数据点在外部世界中的位置来显示边界框外还有其他数据点.
注意:我不需要它是一个"大圆"路径,只需要墨卡托投影中的XY矢量,因为我想这对于"普通"图也是有用的.
例如,这是显示数据范围的世界地图:

这里是放大的视图,手动添加洋红色箭头以显示我想要生成的内容.

下面是我用来生成这两个基本图的代码和数据.我需要的是一种生成箭头的方法.
require(ggplot2)
te = structure(list(lat = c(33.7399, 32.8571, 50.2214, 36.96263, 33.5835,
33.54557, 47.76147, 48, 59.40289, 35.93411, 32.87962, 38.3241,
50.03844, 37.44, 50.07774, 50.26668, 36.5944), lng = c(-118.37608,
-117.25746, -5.3865, -122.00809, -117.86159, -117.79805, -124.45055,
-126, -146.35157, -122.931472, -117.25285, -123.07331, -5.26339,
25.4, -5.709894, -3.86828, -121.96201)), .Names = c("lat", "lng"
), class = "data.frame", row.names = c(NA, -17L))
all_states = map_data("world")
# world version:
wp = ggplot() +
geom_polygon(data = all_states, aes(x = long, y = lat, group = …Run Code Online (Sandbox Code Playgroud) 我希望沿着线的长度制作带有箭头(或类似的V形)的定向网络图...
该igraph库似乎使用了polygon接受的基本功能lty指定行类型,但这些仅限于各种破折号.
有没有办法制作自定义符号(甚至使用三角形 pch)在R中形成一条线?
制作图表的最小代码:
require(igraph)
gr = graph_from_literal( A -+ B -+ C )
plot(gr,edge.curved=TRUE)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果支持这个,我可以使用另一个网络分析库.我问开发商,ggraph他说不可能做到这一点.
我通常使用ggplot2,但在这种情况下,我使用常规image()函数绘制大型数据集的热图.我可以将所有标签标记为红色,但我想根据我生成的颜色定义向量,使用不同颜色的文本标记y轴:
grid = structure(c(1:12),.Dim = c(4,3))
labs = c("A","B","C")
image(1:4,1:3,grid,axes=FALSE, xlab="", ylab = "")
#This works but isn't the colors I want
axis(2,at=1:length(labs),labels=labs,las=2, adj=1,cex.axis=0.6,col.axis="red")
Run Code Online (Sandbox Code Playgroud)
这会生成以下图像:

我希望标签A和C为黑色,B为红色.这是我试过的,但是它给出了"错误的长度"错误......
axiscolors = c("black","red","black")
axis(2,at=1:length(labs),labels=labs,las=2, adj=1, cex.axis=0.6, col.axis=axiscolors)
Run Code Online (Sandbox Code Playgroud)
这是我对一些"真实"数据的影响......

编辑:
作为备份,如果在ggplot2中可以实现这一点,我可能愿意重新考虑我的代码.我还会使用其他几个应用程序.
我想出了一种在旧标签顶部绘制一层红色符号的方法,但如果可能的话,我更喜欢带有颜色矢量的原生方法......
sublabs = c("B")
axis(2,at=match(sublabs,labs),labels=sublabs,las=2, adj=1, cex.axis=0.6, col.axis="red")
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用,text()如果我可以将标签放在绘图空间之外......
text(c(1,1,1),c(1,2,3),labs,col=c("black","red","black"))
Run Code Online (Sandbox Code Playgroud)
更新:请参阅下面的解决方案与ggplot2...一起使用
最近的许多正则表达式问题在查询中都有某种环视元素,对我来说并不是匹配成功所必需的.是否有一些教学资源正在推广它们?我试图找出哪种情况下你会更好地使用积极的前瞻/后退.我可以看到的主要应用是在尝试不匹配元素时.但是,例如,来自最近问题的这个查询有一个简单的解决方案来捕获.*,但为什么要使用后面的外观?
(?<=<td><a href="\/xxx\.html\?n=[0-9]{0, 5}">).*(?=<\/a><span
Run Code Online (Sandbox Code Playgroud)
而这个来自另一个问题:
$url = "www.example.com/id/1234";
preg_match("/\d+(?<=id\/[\d])/",$url,$matches);
Run Code Online (Sandbox Code Playgroud)
什么时候使用积极的环顾四周真的更好?你能举一些例子吗?
我意识到这与基于意见的问题接近,但我认为答案真的很有启发性.正则表达式令人困惑,没有让事情变得更复杂......我已经阅读了这个页面,并且对于何时使用它们而不是它们如何工作的一些简单指南更感兴趣.
感谢所有的答复.除了以下那些,我建议在这里查看m.buettner的好答案.
通常,当有人发布他们的代码时,人们会将"你with open('filename') as f现在应该使用语法"放在一边.我同意大多数老式的f = open()陈述没有附带.close(),我甚至回答了这些依赖于"隐式关闭"的问题,这是他们编程问题的全部原因.
但是,在某些情况下,将代码嵌套在with块中似乎会在编写代码时产生其他不便.例如,我有时喜欢在开头说一个标志writefile = True.这使我只能打开和关闭文件,如果要使用它,同时保持相同的处理线程.在代码的不同位置,我可以打印到屏幕或写入文件.(我意识到我会stdout在开头打开文件,而是使用那种方法.)
我的问题是:除了不必显式关闭文件外,还有其他原因使用with语法来处理文件,尤其是输出文件吗?("更多pythonic"本身并不是一个原因.)如果这是重复,我会很高兴有这个指出,但我自己找不到它.
我们试图用ggplot2制作一个区域图,其中x轴上方的正区域是一种颜色而负区域是另一种颜色.
给定这个数据集,我想要一个区域图在轴的每一侧用不同颜色着色.
我可以看到一种方法将数据集分成两个子集,一个是正值,其中所有负值都是零,一个是负值,所有正值都是零,然后将它们分别绘制在同一个轴上,但似乎会有一个更像ggplot的方式来做到这一点.
在这个问题上发布的解决方案没有给出准确的结果(见下文).

由此代码生成:
# create some fake data with zero-crossings
yvals=c(2,2,-1,2,2,2,0,-1,-2,2,-2)
test = data.frame(x=seq(1,length(yvals)),y=yvals)
# generate the bar plot
ggplot(data=test,aes(x=x,y=y))
+ geom_bar(data=test[test$y>0,],aes(y=y), fill="blue",stat="identity", width=.5)
+ geom_bar(data=test[test$y<0,],aes(y=y), fill="red",stat="identity", width=.5)
Run Code Online (Sandbox Code Playgroud)
在另一个问题上提出的RLE方法在应用于我们的数据集时会产生与过零相关的工件:

由以下代码生成(不要使用):
# set up grouping function
rle.grp <- function(x) {
xx <- rle(x)
xx$values = seq_along(xx$values)
inverse.rle(xx) }
# generate ribbon plot
ggplot(test, aes(x=x,y=y,group = factor(rle.grp(sign(y))))) +
geom_ribbon(aes(ymax = pmax(0,y),ymin = pmin(0,y),
fill = factor(sign(y), levels = c(-1,0,1), labels = c('-','0','+'))))
+ …Run Code Online (Sandbox Code Playgroud) 如果我有这样的脚本:
import sys
def square(x):
return x*x
def cube(x):
return x**3
Run Code Online (Sandbox Code Playgroud)
如何返回程序中本地定义的所有函数的列表['square', 'cube'],而不是导入的函数.
我尝试时将它们包括在内,dir()但所有变量和其他导入的模块也是如此.我不知道该怎么做dir才能引用本地执行的文件.