Numpy Search&切片3D阵列

时间:2017-12-13 12:50:58

标签: python arrays numpy 3d slice

我对Python& Numpy,我正在努力完成以下任务:

鉴于,3D阵列:

arr_3d = [[[1,2,3],[4,5,6],[0,0,0],[0,0,0]],
          [[3,2,1],[0,0,0],[0,0,0],[0,0,0]]
          [[1,2,3],[4,5,6],[7,8,9],[0,0,0]]]
arr_3d = np.array(arr_3d)
  1. 获取给定3D数组中出现[0,0,0]的索引。
  2. 从首先出现[0,0,0]的位置切割给定的3D阵列。
  3. 换句话说,我正在尝试从给定的3D数组中删除填充(在本例中为[0,0,0])。

    这是我尝试过的,

    arr_zero = np.zeros(3)
    for index in range(0, len(arr_3d)):
        rows, cols = np.where(arr_3d[index] == arr_zero)
        arr_3d[index] = np.array(arr_3d[0][:rows[0]])
    

    但是这样做,我不断收到以下错误:

      

    无法将形状...输入数组广播成形状......

    我期待这样的事情:

    [[[1,2,3],[4,5,6]],
     [[3,2,1]]
     [[1,2,3],[4,5,6],[7,8,9]]]
    

    任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

首次出现那些predictions = kmeans.predict(input_fn=(lambda:[another_X, None])) 缩减与all()一起的索引,然后将每个argmax()切片从2D数组中切片 -

3D