Numpy 为什么asarray和list的反应不同?
我试图理解为什么:Numpy 为什么asarray和list的反应不同?,numpy,types,difference,Numpy,Types,Difference,我试图理解为什么: w=[0.1,0.2,0.3,0.5,0] print(w[w!=0]) 输出:0.2 当 w=[0.1,0.2,0.3,0.5,0] w=np.asarray(w) print(w[w!=0]) 输出:[0.1 0.2 0.3 0.5],这似乎更符合逻辑 那么:为什么列表会返回第二个元素呢?Alist和Andarray实现比较的方式不同。特别是: 当与其他内容进行比较时,列表返回一个bool值True或False。显然,列表w不是值0.2sow!=0.2返回
w=[0.1,0.2,0.3,0.5,0]
print(w[w!=0])
输出:0.2
当
w=[0.1,0.2,0.3,0.5,0]
w=np.asarray(w)
print(w[w!=0])
输出:[0.1 0.2 0.3 0.5]
,这似乎更符合逻辑
那么:为什么列表会返回第二个元素呢?A
list
和Andarray
实现比较的方式不同。特别是:
- 当与其他内容进行比较时,
返回一个列表
值bool
或True
。显然,列表False
不是值w
so0.2
返回w!=0.2
真值
通过返回布尔值的ndarray
来实现比较,表示每个数组元素的比较。因此,ndarray
返回w!=0.2
[True-False-True]
- 对于
,列表
是w[w!=0.2]
,这被视为含义w[True]
w[1]
- 对于
它是ndarray
,然后利用numpy的数组索引只返回布尔值为w[ndarray([True-False-True])
True的那些元素