为了账号安全,请及时绑定邮箱和手机立即绑定

Python中选择子数组的一个问题

Python中选择子数组的一个问题

小唯快跑啊 2021-10-26 17:11:08
在python中的以下代码中:import numpy as npa =  np.random.normal(2, 0.1, 10)c = [0,1,2,3,4,5,6,7,8,9]b = [2,4]print(a[b])print(c[b])为什么可以执行print(a[b]),但显示print(c[b]) 的错误信息?
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

这种类型的索引仅适用于numpy.ndarray并且c只是一个 python,list所以你不能像numpy.ndarray. 您可以先将其转换为 numpy 数组,然后使用您的索引。

c = np.array(c)


查看完整回答
反对 回复 2021-10-26
?
呼如林

TA贡献1798条经验 获得超3个赞

当您在这样的对象上使用括号时:

a[b]

您正在__getitem__使用 b 作为参数调用对象 a 的类的函数。有关功能的更多详细信息,请参见此处。

现在,如果a[b]c[b]引发一个错误时不显示错误,这意味着__getitem__该类的方法的实现a正在处理类型,b而该类的该方法的实现c则没有。这种行为对于每个函数都完全相同,只是调用有点隐藏。


查看完整回答
反对 回复 2021-10-26
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

在 python 中,列表接受基于整数的索引。


执行


## Replace print(c[b]) with following line

print(c[b[0]:b[1])

上面代码的输出


[2, 3]

C 列表正在从索引 2 迭代到索引 3。因为 python 迭代到 end-1 索引。


例如 c[2:4] 将只考虑索引 2 和索引 3。


查看完整回答
反对 回复 2021-10-26
  • 3 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信