Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:单冒号与双冒号_Python_Numpy_Slice_Colon - Fatal编程技术网

Python:单冒号与双冒号

Python:单冒号与双冒号,python,numpy,slice,colon,Python,Numpy,Slice,Colon,在这种情况下,单冒号和双冒号有什么区别? 数据[0:,4]vs数据[0::,4] women_only_stats = data[0::,4] == "female" men_only_stats = data[0::,4] != "female" 我试图用数据[0:,4]替换数据[0:,4],我看不出有什么不同。这种情况和另一种情况有什么不同吗 数据是一个二维数组,其行类似于['1''0''3''Braund,Owen Harris先生''男性''22''1''0''A/5 211

在这种情况下,单冒号和双冒号有什么区别?
数据[0:,4]
vs
数据[0::,4]

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

men_only_stats = data[0::,4] != "female"   
我试图用
数据[0:,4]
替换
数据[0:,4]
,我看不出有什么不同。这种情况和另一种情况有什么不同吗


数据
是一个二维数组,其行类似于
['1''0''3''Braund,Owen Harris先生''男性''22''1''0''A/5 21171''7.25''S']
没有区别。您正在使用相同的
切片
对象进行索引。

,没有区别

有关以下内容,请参阅Python文档:

从文档:
a[开始:停止:步骤]

开始参数和步骤参数默认为无。切片对象具有 只读数据属性start、stop和step仅返回 参数值(或其默认值)

在这种情况下,您将包括一个空的
步骤
参数

>>> a = [1,2,3,4]
>>> a[2:]
[3,4]
>>> a[2::]
[3,4]
>>> a[2:] == a[2::]
True
要了解
步骤
参数的实际作用:

>>> b = [1,2,3,4,5,6,7,8,9,10]
>>> b[0::5]
[1, 6]
>>> b[1::5]
[2, 7]
因此,通过将其隐式设置为
None
(即
a[2://code>或
a[2::]
),您不会以任何方式更改代码的输出


希望这有帮助。

两种语法产生相同的索引

class Foo(object):
  def __getitem__(self, idx):
    print(idx)

Foo()[1::,6]
# prints (slice(1, None, None), 6)
Foo()[1:,6]
# prints (slice(1, None, None), 6)
基本上,
1::,6
是一个切片(
1::
)和一个数字(
6
)的元组。切片的形式为
开始:停止[:跨步]
。将跨步留空(
1::
)或不说明跨步(
1:
)是等效的
s[开始:结束:步骤]
。 用步骤从开始到结束切片。

在您的案例中,数据是

data = ['1' '0' '3' 'Braund, Mr. Owen Harris' 'male' '22' '1' '0' 'A/5 21171' '7.25' '' 'S']
所以它等于

data = ['103Br.............7.25S']
在这种情况下,列表中只有一项,所以数据[0::4]或数据[0:4]不会影响任何事情

如果你试着这样做,你的问题/答案就会清楚

print data[0][0::4]
print data[0][0:4] 
它就像

data[start:end:step]
因此,如果您的步长小于数据长度,它的行为与通常一样