【问题标题】:Inconsistant behavior of ndarray in case of blank in python 3.Xpython 3.X中空白的情况下ndarray的行为不一致
【发布时间】:2016-08-31 10:33:09
【问题描述】:

当我使用 scikit-learn 分类器模型预测一个类时

class=modelftr.predict(X_t)

类变量返回

>>class

array(['class1'],dtype='<U47')

而当我将变量定义为时

x=np.ndarray([],dtype='&lt;U47')

调用x[0] 返回

Traceback(最近一次调用最后一次):

文件“”,第 1 行,在

IndexError: 数组索引过多

当我将变量定义为:

class=np.ndarray([''],dtype='<U47')

错误生成为:

Traceback(最近一次调用最后一次):

文件“”,第 1 行,在

TypeError:需要一个整数

为什么会有这样的行为?

【问题讨论】:

    标签: python-3.x numpy multidimensional-array scikit-learn


    【解决方案1】:

    第一个例子是一个单元素数组:

    In [50]: a=np.array(['one'],dtype='U10')
    
    In [51]: a.shape
    Out[51]: (1,)
    
    In [52]: a[0]
    Out[52]: 'one'
    

    第二个是一个有0个元素的数组。

    In [53]: a=np.array([],dtype='U10')
    
    In [54]: a.shape
    Out[54]: (0,)
    

    唯一允许的索引是空元组:

    In [56]: a[()]
    Out[56]: 
    array([], 
          dtype='<U10')
    

    在一个新的 numpy 上,a[0] 产生 IndexError: index 0 is out of bounds for axis 0 with size 0

    至于最后一个,创建和简单索引的工作方式与第一个相同。

    In [58]: a=np.array([''],dtype='U10')
    
    In [59]: a
    Out[59]: 
    array([''], 
          dtype='<U10')
    
    In [60]: a[0]
    Out[60]: ''
    

    究竟是什么代码产生了最后一个错误?

    【讨论】:

    • 最后一个错误是在声明本身时产生的,我不确定,但我觉得 dtype 负责。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2020-04-09
    • 2019-01-02
    • 2016-07-18
    • 1970-01-01
    • 2015-08-21
    相关资源
    最近更新 更多