python - 使用 numpy.char 函数需要哪些 numpy 结构作为输入?

标签 python string numpy numpy-ndarray

考虑一个字符串数组的 numpy 数组(至少是我最接近的做法):

ff = np.array([['a:bc','d:ef'],['g:hi','j:kl']])
print(ff.dtype)
<U4

但是这些不能与 numpy.char 一起使用方法显然..?

ffc = ff.astype('S5')
fff = np.char.split(ffc,':')[1]


Traceback (most recent call last):
  File "<input>", line 3, in <module>
  File "/usr/local/lib/python3.7/site-packages/numpy/core/defchararray.py", line 1447, in split
    a, object_, 'split', [sep] + _clean_args(maxsplit))
TypeError: a bytes-like object is required, not 'numpy.str_'

类型<U4有什么区别和.str_以及如何通过 np.char.** 解析显示的字符串?

最佳答案

首先,np.char函数适用于 chararrays ,应使用 np.char.array 构建或np.char.asarray (参见docs)。

因此,您给定的代码将像这样工作:

ff = np.array([['a:bc','d:ef'],['g:hi','j:kl']])
ffc = np.char.asarray(ff)
fff = np.char.split(ffc, ':')[1]

print(fff)

输出:

[list(['g', 'hi']) list(['j', 'kl'])]

此转换是隐式执行的,因此实际上这也可以工作:

ff = np.array([['a:bc','d:ef'],['g:hi','j:kl']])
fff = np.char.split(ff, ':')[1]

为了完整起见,您的附属问题是关于 <U4S5 :

一个numpy dtypeU表示unicode字符串,即recommended way of representing strings 。另一方面,S表示一个以 null 结尾的字节数组。

我怀疑字符串方法是在 Python 对象上执行的,因此您需要一个类似 Python 字符串的类型(知道它自己的长度等),而不是一个“哑”C 类似字符串的字节数组。

关于python - 使用 numpy.char 函数需要哪些 numpy 结构作为输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55890268/

相关文章:

c - 以标准格式打印名称

numpy:使用一维数组作为二维数组索引的有效方法

python - 替换 numpy 数组中特定索引处的元素

python - 绘制到plot_surface - 无法正确地将数据转换为所需的格式

python - Boto3 S3 实例的 AWS 凭证放置在哪里

python - 使用 python 和 urllib 从 Yahoo FInance 获取数据

python - App Engine 服务的自定义服务帐户

python - 链接两个python字典

java - 如何打印我的 Java 对象而不得到 "SomeType@2f92e0f4"?

Java 字符串 : how do I get the value of X, Y 和 Z 来自字符串 "vt X,Y,Z"