【问题标题】:Remove last elements in a numpy array删除numpy数组中的最后一个元素
【发布时间】:2018-01-22 10:19:04
【问题描述】:

我有这个 numpy 数组:

array([ 0.49010508,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.09438115,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
   -1.        , -1.        , -1.        , -1.        , -1.        ,
   -1.        , -1.        , -1.        , -1.        , -1.        ,
   -1.        , -1.        ])

这是名为allSimilarity 的 5D numpy 数组的第一行。我用np.full() 定义了它,fill_value 是-1。计算后,我想删除最后一个无用的-1 值。所以,我计算了尺寸差异,但是当我使用 np.delete()np.resize()allSimilarity[index1][index2][index3][index4] = allSimilarity[index1][index2][index3][index4][:diff].copy()(其中 diff 是旧尺寸和新尺寸之间的尺寸差异)时,我得到了这个错误:

ValueError: could not broadcast input array from shape (55) into shape (67)

有什么建议吗?

提前致谢。

【问题讨论】:

  • 当然,如果有更多维度的依赖数据将保持旧形状,则您无法将其删除(并因此调整其大小)。这就是错误告诉你的。也许让我们对其他数据有更多的了解?
  • 您无法调整 ND 数组中单行的大小,如果您正在尝试这样做的话。当然,您可以调整所有行的大小 - 但所有行的大小必须相同。
  • 那么,唯一的方法是在计算时排除-1 值?我可以在计算平均值或任何其他数学运算之前“屏蔽”-1 值吗?
  • -1 来自哪里?听起来 NaN (np.nan) 可能更合适。

标签: python arrays numpy


【解决方案1】:

希望这会有所帮助。

import numpy as np

j = np.array([ 0.49010508,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.09438115,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
    0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
   -1.        , -1.        , -1.        , -1.        , -1.        ,
   -1.        , -1.        , -1.        , -1.        , -1.        ,
   -1.        , -1.        ])

j = j[j!=-1]
print j

结果:

[ 0.49010508  0.          0.          0.          0.          0.          0.
  0.          0.09438115  0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.        ]

【讨论】:

  • ValueError: could not broadcast input array from shape (55) into shape (69) 因为我有一个二维数组。
猜你喜欢
  • 1970-01-01
  • 2016-01-01
  • 2012-01-05
  • 2018-11-16
  • 1970-01-01
  • 2011-06-06
  • 2013-01-14
  • 2014-12-09
相关资源
最近更新 更多