如何根据numpy中的条件分割异构数组?

问题描述 投票:0回答:1

试图根据条件拆分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中做到这一点,还是我们必须在比较之前迭代所有元素检查类型?

python arrays python-3.x numpy
1个回答
1
投票

使用type将列转换为所需的numpy.array.astype

a[a[:,0].astype(int) <= 3]
array([['3', 'me', '10'],
       ['2', 'be', '67'],
       ['1', 'it', '100']], dtype='<U11')
© www.soinside.com 2019 - 2024. All rights reserved.