小编Dan*_*l F的帖子

Yield Request调用在scrapy的递归方法中产生奇怪的结果

我试图在一天之内使用Python和Scrapy从所有国家的所有机场取消所有出发和到达.

这个着名站点(飞行雷达)使用的JSON数据库需要在一个机场的出发或到达> 100时逐页查询.我还根据查询的实际UTC计算时间戳.

我尝试使用此层次结构创建数据库:

country 1
 - airport 1
    - departures
      - page 1
      - page ...
    - arrivals
      - page 1
      - page ...
- airport 2
    - departures
      - page 1
      - page ...
    - arrivals
      - page 
      - page ...
...
Run Code Online (Sandbox Code Playgroud)

我使用两种方法按页面计算时间戳和网址查询:

def compute_timestamp(self):
    from datetime import datetime, date
    import calendar
    # +/- 24 heures
    d = date(2017, 4, 27)
    timestamp = calendar.timegm(d.timetuple())
    return timestamp

def build_api_call(self,code,page,timestamp):
    return 'https://api.flightradar24.com/common/v1/airport.json?code={code}&plugin\[\]=&plugin-setting\[schedule\]\[mode\]=&plugin-setting\[schedule\]\[timestamp\]={timestamp}&page={page}&limit=100&token='.format(
        code=code, page=page, timestamp=timestamp)
Run Code Online (Sandbox Code Playgroud)

我将结果存储到CountryItem包含许多AirportItem机场的结果中.我 …

python recursion yield scrapy web-scraping

15
推荐指数
2
解决办法
1544
查看次数

使用numpy`as_strided`函数创建任意维度的补丁,平铺,滚动或滑动窗口

今天早上花了一些时间寻找一个广义的问题来指出重复问题as_strided和/或如何制作通用窗口函数.关于如何(安全地)创建补丁,滑动窗口,滚动窗口,平铺或视图到阵列以进行机器学习,卷积,图像处理和/或数值积分,似乎存在很多问题.

我在寻找一个通用功能,可以接受window,step而且axis参数和返回一个as_strided超过任意维度视图.我将在下面给出我的答案,但我很感兴趣,如果有人能够制作更有效的方法,因为我不确定使用np.squeeze()是最好的方法,我不确定我的assert语句使函数足够安全以写入结果查看,我不知道如何处理axis不按升序排列的边缘情况.

尽职调查

我能找到的最通用的函数是sklearn.feature_extraction.image.extract_patches由@eickenberg编写的(以及显然是等价的skimage.util.view_as_windows),但是那些在网上没有很好地记录,并且不能在比原始数组中更少的轴上执行窗口(例如,这个问题要求在一个轴上有一定大小的窗口).通常,问题numpy只需要答案.

@Divakar在这里numpy为1-d输入创建了一个通用函数,但是更高维度的输入需要更多的关注.我在3d输入法上制作了一个裸骨2D窗口,但它不是很可扩展.

arrays numpy convolution

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

如何在numpy数组上进行nD距离和最近邻居计算

此问题旨在成为规范的重复目标

给定两个数组XY形状,(i, n)(j, n)表示 - n维坐标列表,

def test_data(n, i, j, r = 100):
    X = np.random.rand(i, n) * r - r / 2
    Y = np.random.rand(j, n) * r - r / 2
    return X, Y

X, Y = test_data(3, 1000, 1000)
Run Code Online (Sandbox Code Playgroud)

找到最快的方法是什么:

  1. 每个点和每个点之间的D形状距离(i,j)XY
  2. 该指数k_i与距离k_d的的k针对所有点最近的邻居X中的每一个点Y
  3. 该指数r_i,r_j和距离r_d的每一个点在X距离之内r的每一个点的j …

python arrays numpy scipy scikit-learn

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

`numpy.sum` 与 `ndarray.sum`

对于一维numpy数组a,我认为np.sum(a)a.sum()是等价的函数,但我只是做了一个简单的实验,似乎后者总是要快一点:

In [1]: import numpy as np

In [2]: a = np.arange(10000)

In [3]: %timeit np.sum(a)
The slowest run took 16.85 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 6.46 µs per loop

In [4]: %timeit a.sum()
The slowest run took 19.80 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best …
Run Code Online (Sandbox Code Playgroud)

python performance numpy

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

Pandas - 合并具有短间隔的开始/结束时间范围

假设我有一系列给定事件的开始和结束时间:

np.random.seed(1)
df = pd.DataFrame(np.random.randint(1,5,30).cumsum().reshape(-1, 2), columns = ["start", "end"])

    start  end
0       2    6
1       7    8
2      12   14
3      18   20
4      24   25
5      26   28
6      29   33
7      35   36
8      39   41
9      44   45
10     48   50
11     53   54
12     58   59
13     62   63
14     65   68
Run Code Online (Sandbox Code Playgroud)

我想合并间隔小于或等于 的时间范围n,因此n = 1结果将是:

fn(df, n = 1)

    start  end
0       2    8
2      12   14
3      18   20 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

元组列表中具有相同索引的所有元素的平均值

我有一个非常奇怪的数据结构,它是一个元组列表。每个元组有五个元素,其中第一个是标识字符串,其他四个是浮点数字符串(很奇怪,它们不仅仅是浮点数)。抱歉,我从其他人那里得到了这些数据。

我想平均第一个索引相同的 2-5 个数字的所有数字。例子:

   [('ch', ' 0.8307', '0.8583', '0.8047', ' 0.969'),
    ('de', ' 0.721', '0.7529', '0.6917', ' 0.968'),
    ('en', ' 0.8441', '0.8732', '0.8168', ' 0.9569'),
    ('fn', ' 0.8207', '0.8574', '0.7870', ' 0.9609'),
    ('ch', ' 0.466', '0.572', '0.7733', ' 0.969'),
    ('de', ' 0.322', '0.385', '0.5431', ' 0.968'),
    ('sp', ' 0.7609', '0.7893', '0.7344', ' 0.9663'),
    ('ti', ' 0.8135', '0.8430', '0.7860', ' 0.9662')]
Run Code Online (Sandbox Code Playgroud)

输出应该只是将具有相同第一个索引的所有元素一起缩小并平均它们的值,所以它会是这样的(我没有在我的示例输出中对值进行平均):

   [('ch', ' 0.8307', '0.8583', '0.8047', ' 0.969'),
    ('de', ' 0.721', '0.7529', '0.6917', ' 0.968'),
    ('en', ' 0.8441', '0.8732', '0.8168', …
Run Code Online (Sandbox Code Playgroud)

python numpy average pandas

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

形状不匹配:形状 X 的值数组无法广播到形状的索引结果。. . X?

考虑:我正在尝试s为 的每个元素生成von mises 分布的样本k,这会引发错误k=0(这是我的原假设,所以我希望它尽可能准确)。我试图通过给出一个低k和随机的偏差方向来“捏造”它。

认为

import numpy as np
s = 1000
k = np.arange(10)
theta = np.zeros_like(k)
shp = (10,)
Run Code Online (Sandbox Code Playgroud)

然后下面的代码

import scipy.stats as stat    
rpt = (s,) + tuple(np.ones_like(shp))
theta = np.tile(theta, rpt)
k_zero = np.logical_not(k)
theta[:, k_zero] = np.random.rand(np.sum(k_zero), s) * 2 * np.pi - np.pi
k[k_zero] = .001
ks = np.tile(k, rpt)    
Run Code Online (Sandbox Code Playgroud)

给出错误

Traceback (most recent call last):

  File "<ipython-input-blah>", line 1, in <module>
    theta[:, k_zero] = np.random.rand(np.sum(k_zero), …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

将一维数组连接到一个 3D 数组

我有一个三维阵列A,具有形状(5774,15,100)和另一个1 d阵列B具有形状(5774,)。我想添加这些以获得另一个C具有 shape 的矩阵(5774,15,101)

我使用hstack

C = hstack((A ,np.array(B)[:,None]))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,任何建议。

ValueError: could not broadcast input array from shape (5774,15,100) into shape (5774)
Run Code Online (Sandbox Code Playgroud)

python numpy

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