In [137]: x[x==None]
Out[137]: array([None], dtype=object)
In [138]: x[x==None]=[5]
In [139]: x
Out[139]: array([list([1]), list([2]), list([3]), 5], dtype=object)
但这并不是列表中的数字;我怀疑这是因为Out[137]返回的是1d数组。你知道吗
您的where可能接近np.nonzero(别名np.where)的用法:
In [142]: x = np.array([[1], [2], [3], None])
In [143]: idx = np.nonzero(x==None)
In [144]: idx
Out[144]: (array([3]),)
In [145]: x[idx]
Out[145]: array([None], dtype=object)
如果我们从idx中提取标量索引,它确实有效:
In [146]: x[idx[0][0]]
In [147]: x[idx[0][0]] = [5]
In [148]: x
Out[148]: array([list([1]), list([2]), list([3]), list([5])], dtype=object)
用简单的索引替换元素是可行的:
查找
None
元素:我们经常说使用
is None
,但这对数组不起作用。在这里,我怀疑对象数组测试可能正在进行id匹配。所以这个测试是暂时的。你知道吗我们可以使用布尔掩码来查找
x
:但这并不是列表中的数字;我怀疑这是因为
Out[137]
返回的是1d数组。你知道吗您的
where
可能接近np.nonzero
(别名np.where
)的用法:如果我们从
idx
中提取标量索引,它确实有效:因此,只要使用标量索引,而不是列表、布尔或数组索引,就可以用列表替换对象数组的单个元素。我不确定如果这个例子有几个
None
,我们应该怎么做。你知道吗总之,有两个问题
可靠地识别
None
用列表替换对象数组的元素。
使用列表理解的替代方法值得考虑。速度将是可压缩的,如果不是更好的话,比数组方法。对象数据类型数组天生就比数字数组慢。你知道吗
你提供的第一行代码没有运行,所以我猜你的意思是
根据numpy docs,努比。哪里与所有数组都是1D时的列表理解没有区别
这意味着你可以用
下面有一个稍微深奥的技巧:将列表包装成0D数组。你知道吗
相关问题 更多 >
编程相关推荐