【问题标题】:What is difference between these two slicing in numpy array?numpy数组中这两个切片有什么区别?
【发布时间】:2017-07-11 09:14:33
【问题描述】:

我有 numpy 数组

X=array([[0, 44.0, 72000.0],
   [2, 27.0, 48000.0],
   [1, 30.0, 54000.0],
   [2, 38.0, 61000.0],
   [1, 40.0, 63777.0],
   [0, 35.0, 58000.0],
   [2, 38.0, 52000.0],
   [0, 48.0, 79000.0],
   [1, 50.0, 83000.0],
   [0, 37.0, 67000.0]], dtype=object)

我想提取整个第 3 列,我像这样切片 X[:,2:3] 但不是 scikit learn fit_transform 函数对此给出错误,但是当我像这样切片 X[:,2] 它工作正常。 X[:,2:3]给输出

array([[72000.0],
       [48000.0],
       [54000.0],
       [61000.0],
       [63777.77777777778],
       [58000.0],
       [52000.0],
       [79000.0],
       [83000.0],
       [67000.0]], dtype=object)

X[:,2] 给出输出

array([72000.0, 48000.0, 54000.0, 61000.0, 63777.77777777778, 58000.0,
       52000.0, 79000.0, 83000.0, 67000.0], dtype=object)

【问题讨论】:

  • 为什么不打印两者的输出,看看它们给了你什么。
  • shape 不同。您可能想使用.reshape 函数
  • 一个是一列的二维矩阵,另一个是向量。

标签: python arrays numpy


【解决方案1】:

不同的是数组的形状:

代码

from numpy import *

X=array([[0, 44.0, 72000.0],
         [2, 27.0, 48000.0],
         [1, 30.0, 54000.0],
         [2, 38.0, 61000.0],
         [1, 40.0, 63777.0],
         [0, 35.0, 58000.0],
         [2, 38.0, 52000.0],
         [0, 48.0, 79000.0],
         [1, 50.0, 83000.0],
         [0, 37.0, 67000.0]], dtype=object)

X1 = X[:,2:3]
X2 = X[:,2]

print(X1.shape)
print(X2.shape)

结果:

(10L, 1L)

(10L,)

如您所见形状不一样

Sklearn 通常使用 (number,) 格式。 考虑阅读每个 sklearn 算法/方法的文档,并查看他们网站上的示例。

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多