Numpy有一些非常有用的字符串操作,可以向量化通常的Python字符串操作。
与这些操作和相比pandas.str
,numpy字符串模块似乎缺少一个非常重要的模块:对数组中的每个字符串进行切片的功能。例如,
a = numpy.array(['hello', 'how', 'are', 'you'])
numpy.char.sliceStr(a, slice(1, 3))
>>> numpy.array(['el', 'ow', 're' 'ou'])
我是否在模块中缺少具有此功能的明显方法?否则,是否有一种快速的矢量化方法来实现这一目标?
这是向量化方法-
def slicer_vectorized(a,start,end):
b = a.view((str,1)).reshape(len(a),-1)[:,start:end]
return np.fromstring(b.tostring(),dtype=(str,end-start))
样品运行-
In [68]: a = np.array(['hello', 'how', 'are', 'you'])
In [69]: slicer_vectorized(a,1,3)
Out[69]:
array(['el', 'ow', 're', 'ou'],
dtype='|S2')
In [70]: slicer_vectorized(a,0,3)
Out[70]:
array(['hel', 'how', 'are', 'you'],
dtype='|S3')
运行时测试-
测试其他作者发布的所有方法,这些方法可以在最后使用,并且还包括本文前面的矢量化方法。
时间到了-
In [53]: # Setup input array
...: a = np.array(['hello', 'how', 'are', 'you'])
...: a = np.repeat(a,10000)
...:
# @Alberto Garcia-Raboso's answer
In [54]: %timeit slicer(1, 3)(a)
10 loops, best of 3: 23.5 ms per loop
# @hapaulj's answer
In [55]: %timeit np.frompyfunc(lambda x:x[1:3],1,1)(a)
100 loops, best of 3: 11.6 ms per loop
# Using loop-comprehension
In [56]: %timeit np.array([i[1:3] for i in a])
100 loops, best of 3: 12.1 ms per loop
# From this post
In [57]: %timeit slicer_vectorized(a,1,3)
1000 loops, best of 3: 787 µs per loop
本文向大家介绍在C ++中找到Numpy数组中每个字符串元素的长度,包括了在C ++中找到Numpy数组中每个字符串元素的长度的使用技巧和注意事项,需要的朋友参考一下 在这里,我们将看到如何获取Numpy数组中每个字符串元素的长度。Numpy是适用于Numeric Python的库,它具有非常强大的数组类。使用此方法,我们可以将数据存储在类似结构的数组中。为了得到长度,我们可以采用两种不同的方法,
我试图计算每个字符串中的元音,我想根据count变量交换字符串,但我做不到。在接受字符串后,我用toCharArray()函数将其转换为char数组,并将每个字符与小写和大写元音进行比较。 我收到一个错误。编写代码部分的任何帮助都将不胜感激。 输入: 输出:
问题内容: 我是Python的完整新手,但似乎给定的字符串可以(有效)为任意长度。也就是说,您可以加入并继续添加:。有没有办法制作这样的字符串数组? 当我尝试此操作时,每个元素仅存储一个字符 另一方面,我知道我可以初始化一定长度的字符串数组,即 最多可以存储10个字符串,最多256个字符。 问题答案: 您可以通过创建一个数组来实现。如果您尝试将长字符串分配给普通的numpy数组,则会截断该字符串:
问题内容: 我想在Python列表中切片每个字符串。 这是我当前的列表: 这是我想要的结果列表: 我想从列表中的每个字符串中切掉最后两个字符。 我怎样才能做到这一点? 问题答案: 使用列表推导创建一个新列表,并将表达式的结果应用于输入列表中的每个元素;这是最后两个字符的切片,返回其余部分: 演示:
在主流的编程语言中数组及其相关的数据结构是使用得最为频繁的,只有在它(们)不能满足时才会考虑链表、hash表(hash表可以看作是数组和链表的混合体)和更复杂的自定义数据结构。 Go语言中数组、字符串和切片三者是密切相关的数据结构。这三种数据类型,在底层原始数据有着相同的内存结构,在上层,因为语法的限制而有着不同的行为表现。首先,Go语言的数组是一种值类型,虽然数组的元素可以被修改,但是数组本身的
问题内容: 我在Jenkins(v2.7.1)中完成了Pipeline作业,在此我想打印多行字符串参数()的每个元素,每行3个字符串: Foo , Bar , Baz 作为输入。 因此,我尝试了以下语法(使用和): 但是它失败了: :尚不支持在经过CPS转换的闭包上调用public static java.lang.Object org.codehaus.groovy.runtime.Defaul