相关疑难解决方法(0)

从给定步幅/步长的numpy数组中取出子阵列

假设我有一个Python Numpy数组a.

a = numpy.array([1,2,3,4,5,6,7,8,9,10,11])
Run Code Online (Sandbox Code Playgroud)

我想从这个长度为5的数组创建一个子序列矩阵,步长为3.结果矩阵因此如下所示:

numpy.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])
Run Code Online (Sandbox Code Playgroud)

实现这一点的一种可能方式是使用for循环.

result_matrix = np.zeros((3, 5))
for i in range(0, len(a), 3):
  result_matrix[i] = a[i:i+5]
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来实现这个Numpy?

python numpy vectorization

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

什么是时间测试熊猫和numpy相关解决方案的简单框架

动机

我在这里和那里回答几个问题.我经常测试我和其他人的解决方案有多快.

是否有一个简单的框架来全面了解各种解决方案的速度有多快?

考虑数据帧 df

df = pd.DataFrame({
        'Group': list('QLCKPXNLNTIXAWYMWACA'),
        'Value': [29, 52, 71, 51, 45, 76, 68, 60, 92, 95,
                  99, 27, 77, 54, 39, 23, 84, 37, 99, 87]
    })
Run Code Online (Sandbox Code Playgroud)

我想总结Value按不同值分组的列Group.我有三种方法可以做到这一点.

import pandas as pd
import numpy as np
from numba import njit


def sum_pd(df):
    return df.groupby('Group').Value.sum()

def sum_fc(df):
    f, u = pd.factorize(df.Group.values)
    v = df.Value.values
    return pd.Series(np.bincount(f, weights=v).astype(int), pd.Index(u, name='Group'), name='Value').sort_index()

@njit
def wbcnt(b, w, k):
    bins = np.arange(k)
    bins = …
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

21
推荐指数
3
解决办法
561
查看次数

寻找成对元素的索引

鉴于目标('b', 'a')和投入:

x0 = ('b', 'a', 'z', 'z')
x1 = ('b', 'a', 'z', 'z')
x2 = ('z', 'z', 'a', 'a')
x3 = ('z', 'b', 'a', 'a')
Run Code Online (Sandbox Code Playgroud)

目的是找到连续('b', 'a')元素的位置并获得输出:

>>> find_ba(x0)
0
>>> find_ba(x1)
0
>>> find_ba(x2)
None
>>> find_ba(x3)
1
Run Code Online (Sandbox Code Playgroud)

使用pairwise食谱:

from itertools import tee
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)
Run Code Online (Sandbox Code Playgroud)

我可以这样做以获得所需的输出:

def find_ba(x, target=('b', 'a')):
    try:
        return next(i for i, pair …
Run Code Online (Sandbox Code Playgroud)

python indexing tuples pairwise

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

在pandas中查找与数组匹配的列名

我有一个大型数据帧(5000 x 12039),我想获得与numpy数组匹配的列名.

例如,如果我有桌子

        m1lenhr m1lenmin    m1citywt    m1a12a  cm1age  cm1numb m1b1a   m1b1b   m1b12a  m1b12b  ... kind_attention_scale_10 kind_attention_scale_22 kind_attention_scale_21 kind_attention_scale_15 kind_attention_scale_18 kind_attention_scale_19 kind_attention_scale_25 kind_attention_scale_24 kind_attention_scale_27 kind_attention_scale_23
challengeID                                                                                 
1   0.130765    40.0    202.485367  1.893256    27.0    1.0 2.0 0.0 2.254198    2.289966    ... 0   0   0   0   0   0   0   0   0   0
2   0.000000    40.0    45.608219   1.000000    24.0    1.0 2.0 0.0 2.000000    3.000000    ... 0   0   0   0   0   0   0   0   0   0
3   0.000000    35.0    39.060299   2.000000    23.0    1.0 2.0 0.0 2.254198 …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

5
推荐指数
2
解决办法
701
查看次数

在python中查找列表中的序列索引

我很新,我希望它不是太明显,但我似乎无法找到以下问题的简短而准确的答案.

我有两个清单:

a = [2,3,5,2,5,6,7,2]
b = [2,5,6]
Run Code Online (Sandbox Code Playgroud)

我想找到第二个list(b)的所有索引都在第一个list(a)中,这样我得到这样的东西:

a中的b的索引:3, 4, 5b = a[3:6]

python list

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

标签 统计

python ×5

numpy ×3

pandas ×2

dataframe ×1

indexing ×1

list ×1

pairwise ×1

tuples ×1

vectorization ×1