微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这种numpy选择行为的背后是什么?

如何解决这种numpy选择行为的背后是什么?

nptest 是对象dtype的2D数组,每行的第一个元素是一个列表。

nptest[:, 0] 是对象dtype的一维数组,其每个元素都是列表。

当您这样做时nptest[:,0]==[1],NumPy不会nptest[:,0]对list的每个元素进行元素比较[1]。它从中创建尽可能高维的数组[1]生成1D数组np.array([1]),然后广播比较,将的每个元素nptest[:,0]与整数1进行比较。

由于innptest[:, 0]中的列表都不等于1,因此结果的所有元素均为False。

解决方法

在回答这个问题时,我和其他一些人实际上认为是错误的,因为认为以下方法可行:

说一个有

test = [ [ [0],1 ],[ [1],1 ]
       ]
import numpy as np
nptest = np.array(test)

背后的原因是什么

>>> nptest[:,0]==[1]
array([False,False],dtype=bool)

而有一个

>>> nptest[0,0]==[1],nptest[1,0]==[1]
(False,True)

要么

>>> nptest==[1]
array([[False,True],[False,True]],dtype=bool)

要么

>>> nptest==1
array([[False,dtype=bool)

是造成尺寸 退化的 原因吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。