我尝试使用Python的urllib获取维基百科文章:
f = urllib.urlopen("http://en.wikipedia.org/w/index.php?title=Albert_Einstein&printable=yes")
s = f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)
然而,而不是HTML页面,我得到以下响应:错误 - 维基媒体基金会:
Request: GET http://en.wikipedia.org/w/index.php?title=Albert_Einstein&printable=yes, from 192.35.17.11 via knsq1.knams.wikimedia.org (squid/2.6.STABLE21) to ()
Error: ERR_ACCESS_DENIED, errno [No Error] at Tue, 23 Sep 2008 09:09:08 GMT
Run Code Online (Sandbox Code Playgroud)
维基百科似乎阻止了不是来自标准浏览器的请求.
有谁知道如何解决这个问题?
Say df是一个熊猫数据帧.
df.loc[] 只接受名字 df.iloc[] 只接受整数(实际展示位置)df.ix[] 接受名称和整数:引用行时,df.ix[row_idx, ]只想获得名称.例如
df = pd.DataFrame({'a' : ['one', 'two', 'three','four', 'five', 'six'],
'1' : np.arange(6)})
df = df.ix[2:6]
print(df)
1 a
2 2 three
3 3 four
4 4 five
5 5 six
df.ix[0, 'a']
Run Code Online (Sandbox Code Playgroud)
抛出错误,它不会返回'两个'.
在引用列时,iloc更喜欢整数,而不是名称.例如
df.ix[2, 1]
Run Code Online (Sandbox Code Playgroud)
返回'三',而不是2.(虽然df.idx[2, '1']确实返回2).
奇怪的是,我想要完全相反的功能.通常我的列名非常有意义,所以在我的代码中我直接引用它们.但是由于大量的观察清理,我的pandas数据框中的行名通常不对应range(len(df)).
我意识到我可以使用:
df.iloc[0].loc['a'] # returns three
Run Code Online (Sandbox Code Playgroud)
但它看起来很难看!有没有人知道更好的方法来做到这一点,所以代码看起来像这样?
df.foo[0, 'a'] # returns three
Run Code Online (Sandbox Code Playgroud)
事实上,是否有可能将自己的新方法添加到pandas.core.frame.DataFrames,所以例如
df.idx(rows, cols)实际上是df.iloc[rows].loc[cols]?
我有一个结构数组,我在程序中的某处创建.
后来,我想迭代一遍,但我没有数组的大小.
我如何迭代元素?或者我需要在某处存储大小?
我想做以下事情:
for i in dimension1:
for j in dimension2:
for k in dimension3:
for l in dimension4:
B[k,l,i,j] = A[i,j,k,l]
Run Code Online (Sandbox Code Playgroud)
不使用循环.最后,A和B包含相同的信息,但索引不同.
我必须指出尺寸1,2,3和4可以相同或不同.所以numpy.reshape()似乎很难.
IOK所以我希望能够从正常分布中选择只能介于0和1之间的值.在某些情况下,我希望能够基本上只返回一个完全随机的分布,而在其他情况下我想返回值落在高斯的形状.
目前我正在使用以下功能:
def blockedgauss(mu,sigma):
while True:
numb = random.gauss(mu,sigma)
if (numb > 0 and numb < 1):
break
return numb
Run Code Online (Sandbox Code Playgroud)
它从正态分布中选取一个值,如果它超出0到1的范围,则丢弃它,但我觉得必须有更好的方法来做到这一点.
关于多父继承,当我打电话给super.__init__,为什么不__init__调用parent2的函数?谢谢.
class parent(object):
var1=1
var2=2
def __init__(self,x=1,y=2):
self.var1=x
self.var2=y
class parent2(object):
var4=11
var5=12
def __init__(self,x=3,y=4):
self.var4=x
self.var5=y
def parprint(self):
print self.var4
print self.var5
class child(parent, parent2):
var3=5
def __init__(self,x,y):
super(child, self).__init__(x,y)
childobject = child(9,10)
print childobject.var1
print childobject.var2
print childobject.var3
childobject.parprint()
Run Code Online (Sandbox Code Playgroud)
输出是
9
10
5
11
12
Run Code Online (Sandbox Code Playgroud) 我试图在numpy中生成对称矩阵.具体地说,这些矩阵具有随机位置条目,并且在每个条目中内容可以是随机的.沿着主对角线,我们并不关心那里的内容,所以我也将它们随机化了.
我采用的方法是首先生成一个nxn全零矩阵,然后简单地循环遍历矩阵的索引.但是,考虑到在python中考虑循环是相对昂贵的,我想知道我是否可以在不使用python的for循环的情况下实现相同的功能.
是否有一些内置于numpy中的东西可以让我更有效地实现我的目标?
这是我目前的代码:
import numpy as np
import random
def empty(x, y):
return x*0
b = np.fromfunction(empty, (n, n), dtype = int)
for i in range(0, n):
for j in range(0, n):
if i == j:
b[i][j] = random.randrange(-2000, 2000)
else:
switch = random.random()
random.seed()
if switch > random.random():
a = random.randrange(-2000, 2000)
b[i][j] = a
b[j][i] = a
else:
b[i][j] = 0
b[j][i] = 0
Run Code Online (Sandbox Code Playgroud) 我有一个长/高格式的mysql表中的数据(如下所述),并希望将其转换为宽格式.我可以只使用sql吗?
最简单的解释一个例子.假设您有关于M个国家(国家,关键,价值)的信息,N个密钥(例如,密钥可以是收入,政治领导者,地区,大陆等)
Long format has 3 columns: country, key, value
- M*N rows.
e.g.
'USA', 'President', 'Obama'
...
'USA', 'Currency', 'Dollar'
Wide format has N=16 columns: county, key1, ..., keyN
- M rows
example:
country, President, ... , Currency
'USA', 'Obama', ... , 'Dollar'
Run Code Online (Sandbox Code Playgroud)
SQL中是否有一种方法可以创建一个包含宽格式数据的新表?
select distinct key from table;
Run Code Online (Sandbox Code Playgroud)
//这会给我所有的钥匙.
1)如何使用这些关键元素创建表格?
2)如何填写表格值?
我很确定我可以用任何脚本语言(我喜欢python)来做这个,但是想知道在mysql中是否有一种简单的方法可以做到这一点.许多统计软件包(如R和STATA)都内置了此命令,因为它经常被使用.
======
更清楚的是,这是一个简单案例的理想输入输出:
输入:
country attrName attrValue key (these are column names)
US President Obama 2
US Currency Dollar 3
China President Hu 4
China Currency Yuan …Run Code Online (Sandbox Code Playgroud) 我有列表的元组.其中一个列表是分数列表.我想将分数列表转换为numpy数组,以利用scipy提供的预构建统计数据.
在这种情况下,元组称为"数据"
In [12]: type data[2]
-------> type(data[2])
Out[12]: <type 'list'>
In [13]: type data[2][1]
-------> type(data[2][1])
Out[13]: <type 'list'>
In [14]: type data[2][1][1]
-------> type(data[2][1][1])
Out[14]: <type 'float'>
In [15]: print data[2][1]
-------> print(data[2][1])
[16.66, 16.66, 16.66, 16.66, 5.5599999999999996, 16.699999999999999]
In [16]: print data[2][1][1]
-------> print(data[2][1][1])
16.66
Run Code Online (Sandbox Code Playgroud)
存储元组后,我可以轻松完成此操作吗?
如果我放置
(insert-image (create-image "/tmp/test.png"))
Run Code Online (Sandbox Code Playgroud)
在缓冲区中,将光标放在最后一个括号后面并用它进行评估C-x C-e,然后图像/tmp/test.png显示在缓冲区中:

很简约.但,
(insert-image ...)完全隐藏文本?(insert-image ...)仅包含文本,而不包含图像.我对此很满意,但是有没有办法告诉emacs (insert-image ...)通过相应的图像(文件打开后)自动替换所有表达式,而不必C-x C-e在每个之后输入?python ×7
numpy ×4
arrays ×3
random ×2
scipy ×2
c ×1
dataframe ×1
dimensions ×1
emacs ×1
gaussian ×1
inheritance ×1
init ×1
insert-image ×1
matrix ×1
mysql ×1
oop ×1
optimization ×1
pandas ×1
reshape ×1
sql ×1
statistics ×1
super ×1
tuples ×1
urllib2 ×1
user-agent ×1
wikipedia ×1