gpt4 book ai didi

vector - 将字符向量分成段

转载 作者:行者123 更新时间:2023-12-05 01:03:19 24 4
gpt4 key购买 nike

我有以下向量 Vec :ACGTTGCA并想将其划分为一个嵌套向量,其中在第 i 个位置将有一个子段 Vec长度为 4,从 Vec 的第 i 个位置开始.

例如,Vec[(⍳¯3+⍴Vec)∘.+¯1+⍳4]返回:

ACGT
CGTT
GTTG
TTGC
TGCA

但是上面输出的问题是它是一个字符矩阵,而我想得到以下输出:
┌──────────────────────────┐
│┌────┬────┬────┬────┬────┐│
││ACGT│CGTT│GTTG│TTGC│TGCA││
│└────┴────┴────┴────┴────┘│
└──────────────────────────┘

对于以下字符串: vec←'Hy, only testing segmenting vec into pieces of 4'我正在寻找的正确结果是:
┌→────────────────────────────────────────┐
│ ┌→───┐ ┌→───┐ ┌→───┐ ┌→───┐ │
│ │Hy, │ │y, o│ │, on│ │ onl│ (and so on) │
│ └────┘ └────┘ └────┘ └────┘ │
└∊────────────────────────────────────────┘

另外,有没有办法到 将此类向量转换为单个向量 , 哪些后续行将包含 4 个字符?

示例:对于 foobartesting字符向量结果将是:
foob
ooba
obar
bart
arte
rtes
test
esti
stin
ting

最佳答案

回到您最初的问题:您只需要添加一个前导“拆分”(↓)即可将矩阵结果转换为您(正在)寻找的向量向量。请注意,虽然它可能不那么优雅,但基于生成索引矩阵的“经典”解决方案可能更有效,因为特定的窗口缩减不在大多数 APL 解释器优化的情况列表中。

在运行在 Intel Core i5 @ 1.60Ghz 上的 Dyalog APL v14.0/64 中:

x←'foobartesting'

(4 ,/x) 在大约 9.3 微秒内执行

(↓4 {⍵[(0,⍳-⍺-⍴⍵)∘.+⍳⍺]} x) 时钟在 2.3 左右

随着向量长度的增加,效率差距会扩大;当您达到长度为 10,000 的参数时,窗口减少速度几乎慢了 10 倍(7 对 0.7 毫秒)。

在 Dyalog APL 中,“经典”方法的效率通过 1 字节和 2 字节整数类型的可用性得到增强;如果您使用其他 APL 口译员,您的里程可能会有所不同。

关于vector - 将字符向量分成段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24879915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com