小编MSe*_*ert的帖子

从调用生成器的函数返回或产生?

我有一个生成器generator和一个方便的方法 - generate_all

def generator(some_list):
  for i in some_list:
    yield do_something(i)

def generate_all():
  some_list = get_the_list()
  return generator(some_list) # <-- Is this supposed to be return or yield?
Run Code Online (Sandbox Code Playgroud)

应该generate_all return还是yield?我希望两种方法的用户都使用相同的方法,即

for x in generate_all()
Run Code Online (Sandbox Code Playgroud)

应该等于

some_list = get_the_list()
for x in generate(some_list)
Run Code Online (Sandbox Code Playgroud)

python yield return function generator

31
推荐指数
4
解决办法
1979
查看次数

在python3.6中,集合的顺序是像dicts一样

由于dictPython 3.6 中的实现发生了变化,现在默认排序.现在还set保留秩序吗?

我找不到任何关于它的信息,但由于这两种数据结构在它们工作的方式非常相似,我认为可能就是这种情况.

我知道dict在所有情况下都无法订购s,但它们大多数情况下都是如此.如Python文档中所述:

这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖它

python cpython set python-internals python-3.6

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

在Pandas中将float64列转换为int64

我尝试将列从数据类型转换float64int64使用:

df['column name'].astype(int64)
Run Code Online (Sandbox Code Playgroud)

但得到一个错误:

NameError:未定义名称"int64"

该列有多少人,但格式化为7500000.0,任何想法我怎么可以简单地将其更改float64int64

python dataframe pandas

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

将一系列int转换为字符串 - 为什么应用比astype快得多?

我有一个pandas.Series包含整数,但我需要将这些转换为字符串以用于某些下游工具.所以假设我有一个Series对象:

import numpy as np
import pandas as pd

x = pd.Series(np.random.randint(0, 100, 1000000))
Run Code Online (Sandbox Code Playgroud)

在StackOverflow和其他网站上,我见过大多数人认为最好的方法是:

%% timeit
x = x.astype(str)
Run Code Online (Sandbox Code Playgroud)

这大约需要2秒钟.

使用时x = x.apply(str),只需0.2秒.

为什么x.astype(str)这么慢?应该推荐的方式x.apply(str)吗?

我主要对python 3的行为感兴趣.

python string performance python-internals pandas

26
推荐指数
2
解决办法
1490
查看次数

素数分解 - 列表

我正在尝试实现一个函数primeFac(),该函数将正整数作为输入,n并返回包含素数因子分解中所有数字的列表n.

我已经做到这一点,但我认为在这里使用递归会更好,不知道如何在这里创建递归代码,什么是基本情况?首先.

我的代码:

def primes(n):
    primfac = []
    d = 2
    while (n > 1):
         if n%d==0:
             primfac.append(d)
    # how do I continue from here... ?
Run Code Online (Sandbox Code Playgroud)

python prime-factoring python-3.x

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

Python Pylab散点图误差条(每个点上的误差是唯一的)

我正在尝试一个2个数组的散点图,我有一个第三个数组,包含每个点上的绝对误差(y方向的误差).我希望误差条介于两者之间(点a - a上的错误)和(指向a上的a +错误).有没有办法用pylab实现这一点,如果没有任何想法我怎么能做到这一点?

python matplotlib

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

从numpy.array中删除数据

我有一个排名第一的numpy.array,我想制作一个盒子图.但是,我想在数组中排除所有等于零的值......目前,我通过循环数组并将值复制到新数组(如果不等于零)来解决此问题.但是,由于数组包含86 000 000个值,而且我必须多次执行此操作,因此需要很大的耐心.

有更聪明的方法吗?

python arrays filtering numpy

22
推荐指数
4
解决办法
6万
查看次数

如何正确使用scipy的倾斜和峰度函数?

偏斜度是衡量一个数据集和对称性的参数峰度来衡量多么沉重的尾部比正态分布,例如参见这里.

scipy.stats提供了一种计算这两个量的简便方法,参见scipy.stats.kurtosisscipy.stats.skew.

根据我的理解,使用刚才提到的函数,正态分布的偏度和峰度都应为0.但是,我的代码并非如此:

import numpy as np
from scipy.stats import kurtosis
from scipy.stats import skew

x = np.linspace( -5, 5, 1000 )
y = 1./(np.sqrt(2.*np.pi)) * np.exp( -.5*(x)**2  )  # normal distribution

print( 'excess kurtosis of normal distribution (should be 0): {}'.format( kurtosis(y) ))
print( 'skewness of normal distribution (should be 0): {}'.format( skew(y) ))
Run Code Online (Sandbox Code Playgroud)

输出是:

正常分布的过度峰度(应为0): - 0.307393087742

正态分布的偏度(应为0):1.11082371392

我究竟做错了什么 ?

我正在使用的版本是

python: 2.7.6
scipy : …
Run Code Online (Sandbox Code Playgroud)

python statistics numpy scipy

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

从文件后面的asp.net代码中注入Javascript

我正确地注射了这个吗?

string myScriptName = "EventScriptBlock";
string myScript = string.Empty;

//Verify script isn't already registered
if (!ClientScript.IsClientScriptBlockRegistered(myScriptName))
{
    Response.Write('b');
    myScript = "\n<script type=\"text/javascript\" language=\"Javascript\" id=\"EventScriptBlock\">\n";
    myScript += "alert('hi');";
    myScript += "\n\n </script>";

    ClientScript.RegisterClientScriptBlock(this.GetType(), myScriptName, myScript);
}
Run Code Online (Sandbox Code Playgroud)

这是在我的Page_Load,但我从来没有看到警报,我也没有JavaScript错误.

javascript c# asp.net

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

Python中的运算符重载:处理不同类型和参数的顺序

我有一个简单的类,可以帮助对向量进行数学运算(即数字列表).我Vector可以乘以其他实例Vector 标量(floatint).

在其他更强类型的语言中,我将创建一个方法来将两个vectors和一个单独的方法相乘以乘以vectorint/ float.我仍然是Python的新手,我不确定如何实现它.我能想到的唯一方法是覆盖__mul__()并测试传入的参数:

class Vector(object):
  ...
 def __mul__(self, rhs):
  if isinstance(rhs, Vector):
     ...
  if isinstance(rhs, int) or isinstance(rhs, float):
    ...
Run Code Online (Sandbox Code Playgroud)

即使我这样做,我也会被迫乘以这样Vector的标量:

v = Vector([1,2,3])

result = v * 7
Run Code Online (Sandbox Code Playgroud)

如果我想在乘法中颠倒操作数的顺序怎么办?

result = 7 * v
Run Code Online (Sandbox Code Playgroud)

在Python中这样做的正确方法是什么?

python class operator-overloading operators

16
推荐指数
2
解决办法
3550
查看次数