【问题标题】:add to numpy string array添加到numpy字符串数组
【发布时间】:2019-07-22 11:47:40
【问题描述】:

我有以下两个 numpy 数组:

a1
array(['T', 'T', 'T', ..., 'G', 'A', 'A'], dtype=object)

a2
array(['A', 'G', 'C', ..., 'A', 'T', 'G'], dtype=object)

我想添加两个数组中的每个元素。以下命令有效:

s = a1 + a2
s
array(['TA', 'TG', 'TC', ..., 'GA', 'AT', 'AG'], dtype=object)

但我在尝试使用numpy.char.add 时遇到错误:

np.char.add(a1, a2)

TypeError: string operation on non-string array

为什么会这样?

【问题讨论】:

  • 如果不想使用numpy.char.add,可以使用经典的for循环和zip,也可以使用map函数。
  • np.add(a1,a2)a1+a2 工作方式相同。这使用每个对象的add 方法。 np.char 函数将字符串方法应用于 numpy char dtypes。结果类似

标签: python numpy


【解决方案1】:

您的类型是 object 尝试将其设置为 str 并且它会起作用:

import numpy as np

a1=np.array(['T', 'T', 'T', ..., 'G', 'A', 'A'], dtype=str)

a2=np.array(['A', 'G', 'C', ..., 'A', 'T', 'G'], dtype=str)

print(np.char.add(a1, a2))

【讨论】:

    【解决方案2】:
    1. 如果您不想更改数据类型,请使用zip

    print np.asarray([x[0]+x[1] for x in zip(a1,a2)])

    1. 将数据类型更改为 str 并使用

      print np.char.add(a1, a2)

    【讨论】:

      猜你喜欢
      • 2012-06-14
      • 2015-12-30
      • 2019-08-17
      • 2022-01-22
      • 1970-01-01
      • 2012-12-15
      • 2023-01-19
      • 2022-11-25
      • 2011-04-03
      相关资源
      最近更新 更多