【问题标题】:joining character matrices with delimiter python使用分隔符 python 连接字符矩阵
【发布时间】:2018-07-18 13:37:37
【问题描述】:

我正在尝试创建一个大维 numpy 字符数组(5+ 维),其中每个 bin 代表数字的组合。我将分隔这些数字(可能使用 /),以便稍后在需要时对信息进行字符串拆分。因此,当这变得像一个 20+ 维数组时,特别是为了节省时间。我希望用矩阵来做到这一点,而不是有 20 个循环。请在下面找到一个带有循环的二维示例,以及如何在没有循环的情况下执行此操作的任何想法都会有所帮助。

import numpy as np
storing_array = np.chararray( [80, 98], itemsize = 100 )
for x1 in range(0, 80):
  for x2 in range(0, 98):
    storing_array[x1, x2] = '/'.join([str(x1), str(x2)])

谢谢!

【问题讨论】:

  • 展平数组,执行tolist 并与python列表和字符串进行连接,

标签: python numpy matrix character delimiter


【解决方案1】:

您可以方便地使用np.arange 定义您的x1x2,将它们转换为str,然后将它们转换为object,以便它们支持某些操作:

x2=np.arange(98).astype(str).astype(object)
x1=np.arange(80).astype(str).astype(object)

现在将/ 添加到x1

x1+='/'

现在使用 np.broadcasting 获取所有组合:

result=x1[:,None]+x2

【讨论】:

  • 谢谢!很容易将此方法扩展到五个变量
  • 很好地切换到object dtype。允许访问np.char 不提供的一些字符串操作。
  • @hpaulj 我发现关于对象数组的文档有点缺乏,但有一些基本信息here。我发现对足够大的对象数组 (len>1E3) 的 一些 操作可以比等效的列表推导快 2-3 倍
  • gist 文档中很难说是真实的还是建议的。例如np.pytype 可能在未来。嵌套数组/列表的深度仍然难以控制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 2015-07-11
  • 2020-07-27
  • 2015-09-26
相关资源
最近更新 更多