如何根据numpy中的条件分割异构数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据numpy中的条件分割异构数组?相关的知识,希望对你有一定的参考价值。
试图根据条件拆分numpy数组。过滤器必须采用split_column及其split_value,并将数组拆分为两部分,一部分包含子数组,给定split_column上的所有行<= split_value。
即,给
a = np.array([[5, 'hi', 23],
[4, 'we', 15],
[3, 'me', 10],
[2, 'be', 67],
[1, 'it', 100]])
split_column = 0
split_value = 3
预期的产出是
[[3, 'me', 10],
[2, 'be', 67],
[1, 'it', 100]]
我尝试了这个解决方案a[a[:, split_column] <= split_value]
但它只有在所有元素都是数字时才有效。
对于numpy数组中的混合类型(如上所示),我得到了
TypeError:'numpy.ndarray'和'int'的实例之间不支持'<='
在a[a[:, split_column] <= str(split_value)]
中使用str()不是解决方案,因为10 <= 3变为真,这是不正确的。对于列(1),我需要str比较,但对于其他列,它应该是数字比较。
我们怎么能在numpy中做到这一点,还是我们必须在比较之前迭代所有元素检查类型?
答案
使用type
将列转换为所需的numpy.array.astype
:
a[a[:,0].astype(int) <= 3]
array([['3', 'me', '10'],
['2', 'be', '67'],
['1', 'it', '100']], dtype='<U11')
以上是关于如何根据numpy中的条件分割异构数组?的主要内容,如果未能解决你的问题,请参考以下文章