如何根据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中的条件分割异构数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建片段以重复变量编号中的代码行

使用深度 CNN 和完全连接的分类器转换分割掩码 numpy 数组以进行图像分割

用随机数替换条件下的numpy数组值

如何根据特定行中的值对 numpy 数组进行排序?

numpy 元素的条件格式

在 Numpy 数组的列中进行条件替换