gpt4 book ai didi

python - 开始 :stop slicing inconsistencies between numpy and Pandas?

转载 作者:太空狗 更新时间:2023-10-30 01:02:33 27 4
gpt4 key购买 nike

我对 numpy 和 Pandas 之间的以下区别感到有点惊讶/困惑

import numpy as np
import pandas as pd
a = np.random.randn(10,10)

> a[:3,0, newaxis]

array([[-1.91687144],
[-0.6399471 ],
[-0.10005721]])

但是:

b = pd.DataFrame(a)

> b.ix[:3,0]

0 -1.916871
1 -0.639947
2 -0.100057
3 0.251988

换句话说,numpy 不包括 start:stop 符号中的 stop 索引,但 Pandas 包括。我以为 Pandas 是基于 Numpy 的。这是一个错误吗?故意的?

最佳答案

记录的,它是Advanced Indexing的一部分.这里的关键是您根本没有使用停止索引。

ix 属性是一个特殊的东西,它可以让你按标签进行各种高级索引——选择标签列表,使用包含范围的标签而不是索引的半排他性范围,以及其他各种东西。

如果你不想这样,就不要使用它:

In [191]: b[:3][0]
Out[191]:
0 -0.209386
1 0.050345
2 0.318414
Name: 0

如果你在不阅读文档的情况下多玩这个,你可能会想出一个例子,比如你的标签是,'A', 'B', 'C', 'D' 而不是 0, 1, 2, 3,突然间,b.ix[:3] 将只返回 3 行而不是 4 行,而你会再次感到困惑。

区别在于,在那种情况下,b.ix[:3]索引 上的切片,而不是标签 上的切片。

您在代码中请求的内容实际上在“所有标签最多包括 3”和“所有索引最多但不包括 3”之间是不明确的,并且标签总是以 ix (因为如果你不想标签切片,你不必首先使用 ix )。这就是为什么我说问题是您根本没有使用停止索引。

关于python - 开始 :stop slicing inconsistencies between numpy and Pandas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15125961/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com