gpt4 book ai didi

pandas - 初始化 pandas SparseArray

转载 作者:行者123 更新时间:2023-12-02 03:07:11 29 4
gpt4 key购买 nike

是否可以通过仅提供密集条目来初始化 pandas SparseArray?我无法从文档中弄清楚这一点:http://pandas.pydata.org/pandas-docs/stable/sparse.html .

例如,假设我想要一个长度为 1000 的 SparseArray,在索引 9 处有一个 1,其他地方都为 0,我将如何创建它?这是一种方式:

a = [0] * 1000
a[9] = 1
sparse_a = pd.SparseArray(data=a, fill_value=0)

但是,在上面,我们必须在稀疏数组之前创建密集数组。有没有办法只指定索引和密集条目来直接创建 SparseArray?

最佳答案

长度为 10 的 SparseArray,索引 9 处为 1,其他位置均为 0:

pd.SparseArray(1, index= range(1), kind='block', 
sparse_index= BlockIndex(10, [8], [1]),
fill_value=0)

注意事项:

  1. index 可以是任何列表,只要它的长度等于数组的所有非稀疏部分(数据的较小部分),在这种情况下,1 的数量 在稀疏数组中
  2. BlockIndex(10, [8], [1]) 是指向数据未解析部分位置的对象,其中第一个参数是数组的总长度 ( sparse + non-sparse),第二个参数是非稀疏数据起始位置的列表,第三个参数是每个非稀疏 block 持续多长时间的列表。 注意:第1点中提到的数组长度是这个BlockIndex
  3. 的第三个参数中列表所有元素的总和

所以一个更一般的例子是:制作一个长度为 20 的 SparseArray 其中第 2、3、6、7、8 个元素是 1 其余的是 0 :

pd.SparseArray(1, index= range(5), kind='block', 
sparse_index= BlockIndex(20, [1,5], [2,3]),
fill_value=0)

pd.SparseArray(1, index= [None, 3, 2, 7, np.inf], kind='block',
sparse_index= BlockIndex(20, [1,5], [2,3]),
fill_value=0)

遗憾的是,我不知道有什么好方法可以将非稀疏数据数组指定为 SparseArray 的第一个参数——这并不意味着它不能完成,这只是免责声明。我认为只要您指定 index=... pandas 就需要第一个参数(数据)的标量。

在 Windows 7 上测试,pandas 版本 0.20.2 由 Aconda 安装。

关于pandas - 初始化 pandas SparseArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41947353/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com