小编Ale*_*ley的帖子

在Numpy中运行max/limsup:什么优化?

为了计算limsup序列,让我们计算,每个imax(A[i:]):

import numpy as np
n = 10
A = np.random.random(n)
M = np.zeros(n)

for i in range(n):
    M[i] = np.max(A[i:])
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

[ 0.85436167  0.92015564  0.44302976  0.56030154  0.16415721  0.39810583   0.65692947  0.5884984   0.57646131  0.0774121 ]
[ 0.92015564  0.92015564  0.65692947  0.65692947  0.65692947  0.65692947   0.65692947  0.5884984   0.57646131  0.0774121 ]
Run Code Online (Sandbox Code Playgroud)

n100万时,这非常非常慢.

可以使用什么优化来有效地计算阵列M

python arrays performance numpy vectorization

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

通过在字符串列中查找精确单词(未组合)来过滤DataFrame

我的DataFrame有两列:

Name  Status
 a    I am Good
 b    Goodness!!!
 c    Good is what i feel
 d    Not Good-at-all
Run Code Online (Sandbox Code Playgroud)

我想过滤其中Status有一个字符串'Good'作为其确切单词的行,而不是与任何其他单词或字符组合.

所以输出将是:

Name  Status
a    i am Good
c    Good is what i feel
Run Code Online (Sandbox Code Playgroud)

另外两行中有一个'Good'字符串,但与其他字符混合在一起,因此不应该被拾取.

我试过做:

d = df[df['Status'].str.contains('Good')]  # But all rows come up
Run Code Online (Sandbox Code Playgroud)

我相信一些正则表达式(r'\bGood\b', Status)会这样做,但这不能一起总结.在DataFrame过滤条件中我如何/在何处完全符合正则表达式来实现这一目标?如何实现startswithendswith'好'(精确的单词搜索)?

python regex string dataframe pandas

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

域名 Whois:如何查找联系信息?

我使用此代码片段获取 Whois 信息:

org.apache.commons.net.whois.WhoisClient whois = new org.apache.commons.net.whois.WhoisClient();
whois.connect("whois.verisign-grs.com", 43);

String domainWhois = whois.query(domainName);

whois.disconnect();
Run Code Online (Sandbox Code Playgroud)

我获得了创建、到期日期、注册商和名称服务器,但没有与管理或技术联系人相关的数据。有什么办法可以得到它们吗?

java dns whois domain-name

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

NumPy:填充数组中1周围的字段

假设我有一个4x4矩阵,如下所示:

[[0, 0, 0, 0]
 [0, 0, 1, 0]
 [0, 0, 0, 0]
 [0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

我想写一个函数,它接受一个的所有4个周围的字段,并将它们变成1.

上述矩阵将变为:

[[0, 0, 1, 0]
 [0, 1, 1, 1]
 [0, 0, 1, 0]
 [0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

我知道这可以使用if语句,但我真的想优化我的代码.

矩阵只包含0和1.如果1位于矩阵的边缘,则1不应该环绕,即如果最左边的字段是1,则最右边的字段仍然保持为0.此外,我使用的是Python 3.5

有没有更多数学或简洁的方法来做到这一点?

python arrays numpy matrix

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

用于2D数组的python中的元素AND和OR运算

python中是否有任何方法可以跨行或列计算2D数组的元素OR或AND运算?

例如,对于以下数组,跨行的元素OR运算将产生向量[1, 0, 0, 0, 0, 0, 0, 0].

array([[1, 0, 0, 0, 0, 0, 0, 0],
       [1, 0, 0, 0, 0, 0, 0, 0],
       [1, 0, 0, 0, 0, 0, 0, 0],
       [1, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)

python numpy logical-operators

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

如何使用特定规则在Python中逐元素地比较两个数组?

比方说我有:

numpy.random.seed(20)
a=numpy.random.rand(5000)
b=numpy.random.rand(5000)
Run Code Online (Sandbox Code Playgroud)

我想获得一个位置的索引a[x] > b[x],即所有x的索引

此外,我想得到一个指数(a[x-1] < b[x-1]) && (a[x] > b[x]).

有人可以帮忙吗?我有一种感觉,我必须使用蒙面数组,但我不知道如何.

python arrays compare numpy

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

使用正则表达式更改 Python 3 字典中的键值

给定以下字典,如何返回从键中去除所有非数字的新键?

import re 

dict {'abc_12': 5, 'abc_1': 7, 'abc_34': 10}

for k in dict:
    re.sub('[^0-9]', '', k)
    # change value of first key to '12': 5
Run Code Online (Sandbox Code Playgroud)

python regex dictionary python-3.x

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

无限猴子定理:超出最大递归深度

我试图解决无限猴子定理,这是我在网上遇到的编程任务的一部分.

问题陈述是:

该定理指出,猴子在打字机键盘上随机敲击键无限时间几乎肯定会输入一个给定的文本,例如威廉·莎士比亚的全集.好吧,假设我们用Python函数替换猴子.你认为Python函数生成莎士比亚的一个句子需要多长时间?我们要拍的句子是:"它就像狡猾的人一样"

我试图看a)是否有可能生成字符串b)生成字符串后迭代次数

我已经将递归限制设置为10000,查看之前的SO问题,但我仍然得到达到最大递归深度的运行时错误.

我仍然在寻找python的方法.我希望看到有关如何以更好的方式做到这一点的建议,而不会遇到递归深度问题.

到目前为止,这是我的代码:

import random
import sys
alphabet=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ']
quote="methinks  it is like a weasel"
msg='cont'
count=0

sys.setrecursionlimit(10000)

def generate(msg):
    sentence=''
    while len(sentence)!=27:
        #random.choice() prints a random element from list 'alphabet'
        sentence=sentence+random.choice(alphabet)
    if msg=='cont':
        verify(sentence)

def verify(msg2):
    global count
    if msg2.find(quote)==-1:
        count+=1
        generate('cont')

    else:
        print 'sentence is ',msg2 ,'count is',count

if __name__ == '__main__':
    generate(msg)
Run Code Online (Sandbox Code Playgroud)

python recursion runtime-error

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

基于过滤器在pandas DataFrame中创建新列

鉴于此DataFrame:

df = pandas.DataFrame({"a": [1,10,20,3,10], "b": [50,60,55,0,0], "c": [1,30,1,0,0]})
Run Code Online (Sandbox Code Playgroud)

是什么力量让一个新的列,"过滤器"具有价值的最佳途径"合格",如果在列中的值ab均小于X和值"不及格",否则?

它可以通过遍历行来完成,但它效率低且不够优雅:

c = []

for x, v in df.iterrows():
     if v["a"] >= 20 and v["b"] >= 20:
         c.append("pass")
     else:
         c.append("fail")

df["filter"] = c
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

如何将带分隔符的字符串转换为Python中的字符串列表?

我正在查询数据库并获取此文本:

"('username', '192.168.1.1', datetime.datetime(2013, 1, 3, 7, 18))"
Run Code Online (Sandbox Code Playgroud)

我想分成这样的列表:

['username', '192.168.1.1', datatime.datetime(2013, 1, 3, 7, 18)]
Run Code Online (Sandbox Code Playgroud)

那么,哪种方式最好的方式呢?我正在使用Python 2.4.

python string datetime list python-2.4

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