相关疑难解决方法(0)

Python,超越基础

我已经掌握了Python的基础知识,我有一个小假期,我想用一些来学习更多的Python.问题是我不知道该学什么或从哪里开始.我主要是网络开发,但在这种情况下,我不知道它会有多大的不同.

python

14
推荐指数
2
解决办法
4145
查看次数

不明白这个python For循环

我仍然是一个python newb,但我正在通过Pyneurgen神经网络教程,我不完全理解用于创建输入数据的for循环如何在这个实例中工作:

for position, target in population_gen(population):
    pos = float(position)
    all_inputs.append([random.random(), pos * factor])
    all_targets.append([target])`
Run Code Online (Sandbox Code Playgroud)

什么是循环迭代?我以前没有遇到过使用逗号和循环中的函数.

在此先感谢任何帮助:)

python

14
推荐指数
2
解决办法
7153
查看次数

迭代多个文件的所有行的最pythonic方法是什么?

我想将许多文件视为一个文件.什么是正确的pythonic方式采用[filenames] => [文件对象] => [行]与生成器/不读取整个文件到内存?

我们都知道打开文件的正确方法:

with open("auth.log", "rb") as f:
    print sum(f.readlines())
Run Code Online (Sandbox Code Playgroud)

我们知道将几个迭代器/生成器链接到一个长迭代器的正确方法:

>>> list(itertools.chain(range(3), range(3)))
[0, 1, 2, 0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

但是如何将多个文件链接在一起并保留上下文管理器?

with open("auth.log", "rb") as f0:
    with open("auth.log.1", "rb") as f1:
        for line in itertools.chain(f0, f1):
            do_stuff_with(line)

    # f1 is now closed
# f0 is now closed
# gross
Run Code Online (Sandbox Code Playgroud)

我可以忽略上下文管理器并执行类似的操作,但感觉不对:

files = itertools.chain(*(open(f, "rb") for f in file_names))
for line in files:
    do_stuff_with(line)
Run Code Online (Sandbox Code Playgroud)

或者这是Async IO-PEP 3156的用途,我只需要等待优雅的语法?

python logging parsing file

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

sklearn Kfold访问单折而不是循环

在使用cross_validation.KFold(n,n_folds = folds)之后,我想访问索引以进行单折的训练和测试,而不是遍历所有折叠.

那么我们来看一下示例代码:

from sklearn import cross_validation
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4])
kf = cross_validation.KFold(4, n_folds=2)

>>> print(kf)  
sklearn.cross_validation.KFold(n=4, n_folds=2, shuffle=False,
                           random_state=None)
>>> for train_index, test_index in kf:
Run Code Online (Sandbox Code Playgroud)

我想像这样访问kf中的第一个折叠(而不是for循环):

train_index, test_index in kf[0]
Run Code Online (Sandbox Code Playgroud)

这应该只返回第一个折叠,但我得到错误:"TypeError:'KFold'对象不支持索引"

我想要的输出:

>>> train_index, test_index in kf[0]
>>> print("TRAIN:", train_index, "TEST:", test_index)
TRAIN: [2 3] TEST: [0 1]
Run Code Online (Sandbox Code Playgroud)

链接:http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.KFold.html

如何检索列车和测试的索引只有一个折叠,而不通过整个for循环?

python scikit-learn cross-validation

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

当 PythonOperator 出现错误“Negsignal.SIGKILL”时,Airflow DAG 失败

我在 Cloud Composer v1.16.16 上运行 Airflowv1.10.15。

我的 DAG 看起来像这样:

from datetime import datetime, timedelta

# imports
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.operators.dummy_operator import DummyOperator
from scripts import workday_extract, workday_config_large

default_args = {
    'owner': 'xxxx',
    'depends_on_past': False,
    'start_date': datetime(2021, 9, 14),
    'email_on_failure': True,
    'email': ['xxxx'],
    'retries': 1,
    'retry_delay': timedelta(minutes=2),
    'catchup': False
}


# Define the DAG with parameters
dag = DAG(
    dag_id='xxxx_v1',
    schedule_interval='0 20 * * *',
    default_args=default_args,
    catchup=False,
    max_active_runs=1,
    concurrency=1
)

def wd_to_bq(key, val, **kwargs):
    logger.info("workday …
Run Code Online (Sandbox Code Playgroud)

sigkill python-3.x google-cloud-platform airflow google-cloud-composer

13
推荐指数
1
解决办法
4万
查看次数

Python向下枚举或使用自定义步骤进行枚举

如何使Python的enumerate函数从较大的数字枚举到较小的数字(降序,递减,倒计时)?或者一般来说,如何使用不同的步进增量/减量enumerate

例如,应用于list的此函数['a', 'b', 'c']具有起始值10和步骤-2,将生成迭代器[(10, 'a'), (8, 'b'), (6, 'c')].

python enumerate

12
推荐指数
2
解决办法
5377
查看次数

如何在Python中将列表作为函数的输入传递

我正在使用Python,我有一个以列表作为参数的函数.例如,我使用以下语法,

def square(x,result= []):
    for y in x:
        result.append=math.pow(y,2.0)
        return result

print(square([1,2,3]))
Run Code Online (Sandbox Code Playgroud)

而输出[1]只是我应该得到的地方[1,4,9].

我究竟做错了什么?

python arrays function list

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

Python的"产量"行为

我正在阅读yieldpython中的关键字,并试图了解运行此示例:

def countfrom(n):
    while True:
        print "before yield"
        yield n
        n += 1
        print "after yield"

for i in countfrom(10):
    print "enter for loop"
    if i <= 20:
        print i
    else:
        break
Run Code Online (Sandbox Code Playgroud)

输出是:

before yield
enter for loop
10
after yield
before yield
enter for loop
11
after yield
before yield
enter for loop
12
after yield
before yield
enter for loop
13
after yield
before yield
enter for loop
14
after yield
before yield
enter for loop …
Run Code Online (Sandbox Code Playgroud)

python yield

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

如何在Python中获得一个月的第3个星期五?

我正试图从雅虎获取股票数据!财务使用Python 2.7.9,但我只需要本月第3个星期五的数据.我有一个获取数据的功能,但需要一种方法来获取日期.我想要这样的东西:

def get_third_fris(how_many):
    # code and stuff
    return list_of_fris
Run Code Online (Sandbox Code Playgroud)

因此,该呼叫get_third_fris(6)将在当前日期之后返回6个项目长的第3个星期五列表.日期需要是Unix时间戳.

(我有几乎没有经验time或者datetime,请解释一下你的代码做什么.)

谢谢!

python date python-2.7

10
推荐指数
6
解决办法
9845
查看次数

Python:在地图对象上调用'list'两次

我想计算直到n的平方和.假设n是4.然后此代码生成一个列表,其中包含0到4范围内的地图对象:

m = map(lambda x: x**2, range(0,4))
Run Code Online (Sandbox Code Playgroud)

足够轻松.现在调用m上的列表,然后求和:

>>> sum(list(m))
14
Run Code Online (Sandbox Code Playgroud)

意外的行为是,如果我再次运行最后一行,则总和为0:

>>> sum(list(m))
0
Run Code Online (Sandbox Code Playgroud)

我怀疑这是因为调用list(m)返回一个空列表,但我找不到这种行为的解释.有人可以帮我解决这个问题吗?

python lambda python-3.x

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