【问题标题】:ndarray value visualization and overwriting in pandaspandas中的ndarray值可视化和覆盖
【发布时间】:2020-03-24 14:32:55
【问题描述】:

我有形状 (3,8,1,1,365) 的 ndarray,其中 3 是产品的计数 (A,B,C),8 是位置的计数 (AA,BB,CC,DD,EE,FF,GG ,HH), 365 是以天为单位的数据时间范围。我想查看 B 和 CC 组合 365 天的值,想替换这些 A 和 BB 组合的值。怎么做 ?请帮助..尝试使用 ndarray_name.todense()[2][3] 来可视化数据,但没有运气..

【问题讨论】:

    标签: python-3.x pandas multidimensional-array


    【解决方案1】:

    这个任务应该被标记为 Numpy,因为 Pandas 没有 提供 5 维数组。

    为了创建一个示例数组,我使用了以下代码:

    import itertools
    s1 = ['A', 'B', 'C']
    s2 = ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH']
    s3 = ['1', '2', '3', '4']
    arr = np.array([ '_'.join(t) for t in itertools.product(s1, s2, s3) ])\
        .reshape((len(s1), len(s2), len(s3)))
    

    暂时arr只有3维,所以要转成5维 数组,运行:

    arr = arr[:, :, np.newaxis, np.newaxis, :]
    

    当您print(arr.shape) 时,结果为:(3, 8, 1, 1, 4)(4 天而不是 365)。

    然后,要打印切片,运行:

    arr[1,2]
    

    结果是:

    array(['B_CC_1', 'B_CC_2', 'B_CC_3', 'B_CC_4'], dtype='<U6')
    

    即:

    • 1(第一个索引) - 将第一个维度限制为第二个值(B),
    • 2(第二个索引)- 将第二个维度限制为第三个值(CC)。

    并将它们替换为 A / BB 值,运行:

    arr[1,2,...] = arr[0,1,...]
    

    【讨论】:

      猜你喜欢
      • 2019-04-14
      • 2013-02-08
      • 2012-07-18
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多