问题描述
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)
是造成尺寸 退化的 原因吗?