为什么有的ndarray对象无法被索引

In [23]:  sa_12 = np.array( set(n_1) & set(n_2) )

In [24]: sa_12[0]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-24-a1610487c9ce> in <module>
----> 1 sa_12[0]

IndexError: too many indices for array

In [25]: sa_12
Out[25]: array({9, 3, 15}, dtype=object)

In [26]: print(sa_12)
{9, 3, 15}

In [27]: sa_12(0)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-27-417ff62b5c0d> in <module>
----> 1 sa_12(0)

TypeError: 'numpy.ndarray' object is not callable

In [28]: np.in1d(n_1,n_2)
Out[28]:
array([False,  True, False, False,  True, False, False,  True, False,
       False])

In [29]: n_1[np.in1d(n_1,n_2)]
Out[29]: array([ 3,  9, 15])

In [30]: sm = n_1[np.in1d(n_1,n_2)]

In [31]: type(sm)
Out[31]: numpy.ndarray

In [32]: sm[0]
Out[32]: 3

In [33]: type(sa_12)
Out[33]: numpy.ndarray

In [34]: sa_12[0]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-34-a1610487c9ce> in <module>
----> 1 sa_12[0]

IndexError: too many indices for array

而有的却可以,

知道了,原来原因是即使同为numpy.ndarray类型的对象,内部还是有差异

In [31]: type(sm)
Out[31]: numpy.ndarray

In [32]: sm[0]
Out[32]: 3

In [33]: type(sa_12)
Out[33]: numpy.ndarray

In [35]: sm
Out[35]: array([ 3,  9, 15])

In [36]: sa_12
Out[36]: array({9, 3, 15}, dtype=object)

sm是我由list对象转换而来

而sa__21是由set转换而来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值