Python 为什么数据帧返回数值数组而索引数组返回布尔值?
我正在学习如何通过数据帧来训练和测试样本。 我回顾了一篇文章,但我不能理解一些关于代码语法的细节Python 为什么数据帧返回数值数组而索引数组返回布尔值?,python,pandas,Python,Pandas,我正在学习如何通过数据帧来训练和测试样本。 我回顾了一篇文章,但我不能理解一些关于代码语法的细节 In [11]: df = pd.DataFrame(np.random.randn(100, 2)) In [12]: msk = np.random.rand(len(df)) < 0.8 In [13]: train = df[msk] In [14]: test = df[~msk] In [15]: len(test) Out[15]: 21 In [16]: len(tr
In [11]: df = pd.DataFrame(np.random.randn(100, 2))
In [12]: msk = np.random.rand(len(df)) < 0.8
In [13]: train = df[msk]
In [14]: test = df[~msk]
In [15]: len(test)
Out[15]: 21
In [16]: len(train)
Out[16]: 79
[11]中的df=pd.DataFrame(np.random.randn(100,2))
在[12]中:msk=np.random.rand(len(df))<0.8
In[13]:列车=df[msk]
在[14]中:test=df[~msk]
In[15]:len(测试)
Out[15]:21
In[16]:len(列车)
Out[16]:79
因为msk将返回一个布尔值数组。msk是df的索引,df[msk]如何返回实际的数值数据?根据我的理解,df的索引应该是一个字符串或字符串数组。在NumPy和Pandas中,与正在索引的数组长度相同的布尔数组被视为“掩码”,并选择掩码为真的值。在NumPy和Pandas中,与正在索引的数组长度相同的布尔数组将被视为“掩码”,并选择掩码为真的值。来自以下网站的Pandas文档: 您可以使用相同的布尔向量从数据帧中选择行 长度作为数据帧的索引
在您的示例中,通过使用
df[msk]
可以获得df
中的行,这些行在布尔向量msk
中具有与True
值相同的索引,其中df[~msk]
对应于msk中的False
值,这些值来自以下文件:
temp = np.array([1, 1, 1, 2, 2, 2])
import numpy as np
print(temp == 1)
Output:
[ True True True False False False]
您可以使用相同的布尔向量从数据帧中选择行
长度作为数据帧的索引
在您的示例中,通过使用df[msk]
可以得到df
中的行,这些行具有布尔向量msk
中True
值的相同索引,其中df[~msk]
对应于msk
中的False
值
temp = np.array([1, 1, 1, 2, 2, 2])
import numpy as np
print(temp == 1)
Output:
[ True True True False False False]
如果temp中的每个元素都等于“1”,则会对其进行检查,并返回相同的布尔列表。你所做的恰恰相反
这只有在numpy中才可能实现。Python列表不支持布尔索引。在python本机列表上应用相同的值,则返回“False”,因为这会将数字与整个列表进行比较
如果temp中的每个元素都等于“1”,则会对其进行检查,并返回相同的布尔列表。你所做的恰恰相反
这只有在numpy中才可能实现。Python列表不支持布尔索引。在python原生列表上应用相同的方法,则返回“False”,因为这会将数字与整个列表进行比较。这是一个纯粹的pandas
问题,与机器学习
或线性回归
无关-请不要垃圾邮件发送不相关的标记(已删除).这是一个纯粹的pandas
问题,与机器学习
或线性回归
无关-请不要垃圾邮件无关的标签(已删除)。