【问题标题】:Write a data string to a NumPy character array?将数据字符串写入 NumPy 字符数组?
【发布时间】:2009-11-18 21:29:01
【问题描述】:

我想将数据字符串写入 NumPy 数组。伪代码:

d = numpy.zeros(10, dtype = numpy.character)
d[1:6] = 'hello'

示例结果:

d=
  array(['', 'h', 'e', 'l', 'l', 'o', '', '', '', ''],
        dtype='|S1')

如何使用 NumPy 最自然、最有效地完成这项工作?

我不想要for 循环、生成器或任何迭代。可以像伪代码一样用一个命令完成吗?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    只需明确地将您的文本设为list(而不是它可以从 Python 中迭代),NumPy 就会自动理解它:

    >>> text = 'hello'
    >>> offset = 1
    >>> d[offset:offset+len(text)] = list(text)
    >>> d
    
    array(['', 'h', 'e', 'l', 'l', 'o', '', '', '', ''],
          dtype='|S1')
    

    【讨论】:

    • 我尝试使用迭代器来避免大字符串的内存开销。你不会相信 numpy 做了什么 --- d[1:6]=iter('hello')
    【解决方案2】:

    当你有 numpy.fromstring 和 numpy.fromiter 时,几乎不需要建立一个列表。

    【讨论】:

    • 我正在将许多字符串写入同一个数组的不同位置。
    【解决方案3】:

    你可以试试 Python 的 array 类型。它的开销不会像list 那样高。

    from array import array as pyarray
    d[1:6] = pyarray('c', 'hello')
    

    【讨论】:

    • 请注意,在 Python 3 中这不起作用,因为尝试从字符串实例化字符数组是一个 TypeError,您应该尝试使用 bytes 代替。 See this 了解更多详细信息和解决方法。
    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 2012-09-09
    • 2022-01-22
    • 2016-03-10
    • 2012-06-14
    • 1970-01-01
    • 2013-05-05
    • 2018-11-28
    相关资源
    最近更新 更多