【问题标题】:Argument must be a string, a bytes-like object or a number, not 'slice'参数必须是字符串、类似字节的对象或数字,而不是“切片”
【发布时间】:2019-08-15 17:40:19
【问题描述】:

我在从 numpy 数组中删除切片时遇到问题。

x_train[:,:,0] 

返回我要删除的数据

但是

np.delete(x_train, np.s_[:,:,0])

抛出异常 TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“切片”

但是在文档中是这样写的

返回一个新数组,其中删除了沿轴的子数组。对于一维数组,这将返回 arr[obj] 未返回的那些条目。

obj : 切片、整数或整数数组

指明要删除的子数组。

【问题讨论】:

    标签: python numpy slice


    【解决方案1】:

    首先,在这种情况下,np.s_ 返回一个元组,而不是一个切片。
    在文档中,他们说您可以将切片作为参数传递,但实际上他们的意思是 slice 类 (Doc) 中内置的 python
    有效的代码是:

    x = [[[1,2,3],[4,5,6]],[[1,1,1],[2,2,2]],[[5,5,5],[7,7,7]]]
    np.delete(x, slice(1,1,1))
    

    但是让我们看看np.s_的输出。

    print(np.s_[:,:,0])
    

    返回

    (slice(None,None,None), slice(None,None,None), 0)
    

    np.s_ 的输出是一个对象元组,有些是切片,有些是索引,您应该阅读np.s_ 的文档以了解更多信息以了解如何使用它。
    其实slice就是允许你写mylist[0:3]的对象,其实这段代码只是mylist[slice(0,3)]
    mylist[:],是slice的一个特例,其实:是一个从0到的slice len(mylist)-1

    【讨论】:

      【解决方案2】:

      我认为问题出在您的切片中,该切片在那里不起作用。试试

      np.delete(x_train, np.s_[1,1,1])
      

      【讨论】:

        【解决方案3】:

        你可以试试这个:

        arr1 = np.delete(arr1, 0, axis=-1)
        

        测试一下:

        import numpy as np
        
        arr1 = np.arange(48).reshape(2,3,8)
        print (arr1)
        arr1 = np.delete(arr1, 0, axis=-1)
        print (arr1)
        

        输出:

        # Before delete
        
        [[[ 0  1  2  3  4  5  6  7]
          [ 8  9 10 11 12 13 14 15]
          [16 17 18 19 20 21 22 23]]
        
         [[24 25 26 27 28 29 30 31]
          [32 33 34 35 36 37 38 39]
          [40 41 42 43 44 45 46 47]]]
        
        # After delete
        
        [[[ 1  2  3  4  5  6  7]
          [ 9 10 11 12 13 14 15]
          [17 18 19 20 21 22 23]]
        
         [[25 26 27 28 29 30 31]
          [33 34 35 36 37 38 39]
          [41 42 43 44 45 46 47]]]
        

        【讨论】:

          猜你喜欢
          • 2017-07-18
          • 2017-02-15
          • 1970-01-01
          • 2016-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多