相关疑难解决方法(0)

压扁不规则的列表列表

是的,我知道这个主题已经被覆盖过了(这里,这里,这里,这里),但据我所知,除了一个之外,所有解决方案都在这样的列表中失败:

L = [[[1, 2, 3], [4, 5]], 6]
Run Code Online (Sandbox Code Playgroud)

期望的输出是什么

[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

或者甚至更好,一个迭代器.我看到的唯一适用于任意嵌套的解决方案可以在这个问题中找到:

def flatten(x):
    result = []
    for el in x:
        if hasattr(el, "__iter__") and not isinstance(el, basestring):
            result.extend(flatten(el))
        else:
            result.append(el)
    return result

flatten(L)
Run Code Online (Sandbox Code Playgroud)

这是最好的型号吗?我忽略了什么吗?任何问题?

python optimization list flatten

412
推荐指数
16
解决办法
12万
查看次数

在python中计算数据帧的每一列中的非零值

我有一个python-pandas-dataframe,其中第一列是user_id,其余列是标签(tag_0到tag_122).我有以下格式的数据:

UserId  Tag_0   Tag_1
7867688 0   5
7867688 0   3
7867688 3   0
7867688 3.5 3.5
7867688 4   4
7867688 3.5 0
Run Code Online (Sandbox Code Playgroud)

我的目标是Sum(Tag)/Count(NonZero(Tags))为每个user_id 实现

df.groupby('user_id').sum(),给我sum(tag),但是我对计算非零值一无所知

是否有可能Sum(Tag)/Count(NonZero(Tags))在一个命令中实现?

在MySQL中我可以实现如下: -

select user_id, sum(tag)/count(nullif(tag,0)) from table group by 1
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

python dataframe pandas

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

通过另一个数组中的值阈值快速计数 numpy 数组的元素

给定一numpy组阈值,生成满足这些值的另一个数组的计数数组的最有效方法是什么?

假设阈值数组较小且已排序,并且要计数的值数组较大且未排序。

示例:对于 的每个元素,计算大于或等于它valueLevels的元素:values

import numpy as np

n = int(1e5) # size of example

# example levels: the sequence 0, 1., 2.5, 5., 7.5, 10, 5, ... 50000, 75000
valueLevels =  np.concatenate(
                   [np.array([0.]), 
                    np.concatenate([ [ x*10**y for x in [1., 2.5, 5., 7.5] ] 
                                   for y in range(5) ] ) 
                    ]
                )

np.random.seed(123)
values = np.random.uniform(low=0, high=1e5, size=n)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过列表理解方法。

  • np.array([sum(values>=x) for x in valueLevels])速度慢得令人难以接受
  • np.array([len(values[values>=x]) for x in valueLevels])是一个进步
  • 排序 …

python numpy cumulative-frequency

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

在每行的numpy数组中计算正确的数目?

我有一个numpy数组,我想返回true每一行的值计数。

例如我有一个numpy数组:

[[False False False ..., False False False]
 [False False False ..., False False False]
 [False False False ..., False  True False]
 ..., 
 [False False False ..., False False False]
 [ True False  True ...,  True  True  True]
 [False False False ..., False False False]]
Run Code Online (Sandbox Code Playgroud)

返回值应类似于:

[10
 15
 8
 ..., 
 11
 10
 12]
Run Code Online (Sandbox Code Playgroud)

这个问题询问如何对整个数组执行操作,但是如何对每一行执行操作呢?

python numpy

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