小编unu*_*tbu的帖子

使用Python获取Wikipedia文章

我尝试使用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)

维基百科似乎阻止了不是来自标准浏览器的请求.

有谁知道如何解决这个问题?

python user-agent wikipedia urllib2 http-status-code-403

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

索引Pandas数据帧:整数行,命名列

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]

python dataframe pandas

36
推荐指数
5
解决办法
3万
查看次数

迭代一个C数组

我有一个结构数组,我在程序中的某处创建.

后来,我想迭代一遍,但我没有数组的大小.

我如何迭代元素?或者我需要在某处存储大小?

c arrays

32
推荐指数
3
解决办法
14万
查看次数

交换numpy数组的尺寸

我想做以下事情:

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()似乎很难.

python arrays optimization numpy dimensions

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

使用numpy.random.normal时如何指定上限和下限

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的范围,则丢弃它,但我觉得必须有更好的方法来做到这一点.

python random numpy gaussian scipy

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

Python多继承,__ init__

关于多父继承,当我打电话给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)

python oop inheritance init super

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

在Numpy中生成对称矩阵

我试图在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)

python random numpy matrix adjacency-matrix

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

Mysql,重塑从长/高到宽的数据

我有一个长/高格式的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)

mysql sql statistics reshape

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

将元组中的列表转换为numpy数组?

我有列表的元组.其中一个列表是分数列表.我想将分数列表转换为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)

存储元组后,我可以轻松完成此操作吗?

python arrays tuples numpy scipy

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

将图像插入文本缓冲区

如果我放置

(insert-image (create-image "/tmp/test.png"))
Run Code Online (Sandbox Code Playgroud)

在缓冲区中,将光标放在最后一个括号后面并用它进行评估C-x C-e,然后图像/tmp/test.png显示在缓冲区中:

在此输入图像描述

很简约.但,

  1. 我不得不将最后的括号放在一个单独的行上,因此图像靠近缓冲区的左侧.有没有办法(insert-image ...)完全隐藏文本?
  2. 文本文件(insert-image ...)仅包含文本,而不包含图像.我对此很满意,但是有没有办法告诉emacs (insert-image ...)通过相应的图像(文件打开后)自动替换所有表达式,而不必C-x C-e在每个之后输入?

emacs insert-image

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