脾气暴躁的大小要求

PKlumpp

我最近偶然发现了一个我不理解的奇怪的麻木行为:我有一个实验列表。每个实验本身也是一个样本列表。因此,我最终得到了一个列表列表。实验是在各种条件下进行的,因此其中一些包含的样本比其他样本多。它们共有一个共同点,即它们包含100多个样本。

现在,我想为每个实验计算样本的均值和标准差。对我有用的是

sDevPD = [np.std(x) for x in f0PD]

我在其中简单地遍历了实验列表中的所有列表f0PD好的,现在我尝试使用numpy:

sDevPD = np.std(f0PD, axis = 1)

这不起作用,numpy会抛出IndexError: tuple index out of range我试图尽我所能来查找错误,并且我发现numpy函数仅在实验大小不同时才会引发此错误。如果我有一个长度相同的列表,则一切正常。同样适用于np.mean

有人可以向我解释这种行为吗?我认为为不同大小的列表计算标准差绝对合法。

ma3oun

Numpy实际上是一个矩阵库。它不能很好地用于可变长度数组。所有操作都必须能够广播,在您的示例中情况并非如此...与其使用Numpy,不如尝试使用Pandas。它依靠numpy进行基本操作。例如:

import pandas as pd
import numpy as np

f0PD = []
for _ in range(10): # here I assume f0PD is a list of 10 lists
    f0PD.append(np.arange(np.random.randint(20))) # this creates lists of random size, up to 20

df = pd.DataFrame(f0PD)
df.std(axis=1) # this works well, regardless of the size of elementary lists

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章