是的,我知道这个主题已经被覆盖过了(这里,这里,这里,这里),但据我所知,除了一个之外,所有解决方案都在这样的列表中失败:
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-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)
任何帮助将不胜感激.
给定一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])
是一个进步我有一个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)
这个问题询问如何对整个数组执行操作,但是如何对每一行执行操作呢?