【问题标题】:Data elements in PythonPython 中的数据元素
【发布时间】:2015-11-21 13:01:33
【问题描述】:

我在试图理解这行代码时有点卡住了。

women_only_stats = data[0::,4] == "female" 

我对数据部分感到困惑。双冒号和旁边的逗号 4 到底是什么意思?

【问题讨论】:

  • [start:stop:step],逗号从何而来?
  • 我知道启动和停止过程,只是我不知道 [::] 和使用 [:] 之间的区别
  • 据我所知,这是一个语法错误。逗号不应该在那里。

标签: python arrays slice


【解决方案1】:

这不是语法错误,甚至可能不是错误。我们需要看到data 才能确定。 Numpy 数组等接受切片元组作为索引,所以这当然不是不可能的。

有关 numpy 索引的介绍,请参阅 here

0:: 部分与::: 基本相同,至少如果我们使用标准切片解释。 (请记住,切片对象可以由多种类型组成,因此像 "A":10:(1,2) 这样的东西在语法上是完全有效的——决定如何处理该输入是对象的责任。)

我怀疑 data 是一个类似于 numpy 的数组

>>> data
array([[1, 2, 5, 12, 'male'],
       [1, 2, 5, 12, 'female'],
       [1, 2, 5, 12, 'female']], dtype=object)
>>> data[:,4]
array(['male', 'female', 'female'], dtype=object)

:,4,或::,4,或0::,4,都表示“给我沿轴0(行)和列#4的每个值”。然后我们可以进行矢量化比较:

>>> data[:,4] == "female"
array([False,  True,  True], dtype=bool)

最后,我们可以用它来过滤data

>>> female_only_stats = data[:,4] == "female"
>>> data[female_only_stats]
array([[1, 2, 5, 12, 'female'],
       [1, 2, 5, 12, 'female']], dtype=object)

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2020-09-25
    • 2018-04-14
    相关资源
    最近更新 更多