【问题标题】:Specific string slicing特定的字符串切片
【发布时间】:2018-04-09 08:56:40
【问题描述】:

我有一个大型字符串数组,我将其存储为一个名为 np_base 的 nparray:np.shape(np_base) Out[32]: (65000000, 1)

我打算做的是对数组进行垂直切片,以便将其分解为多个列,稍后我将以独立的方式存储这些列,因此我尝试遍历行索引并追加:

for i in range(65000000): INCDN.append(np.base[i, 0][0:5]) 但这会导致内存错误。

有人可以帮我解决这个问题吗,我一直在寻找一种对字符串数组进行切片的替代方法。

谢谢,

【问题讨论】:

  • 几个问题。您只是想提取每个字符串的前 5 个字符吗?就地操作会起作用吗?您可以丢弃其余的字符串吗?是否有重复的字符串以便您可以分解?
  • 嗨,基本上我的数组的每一行都存储为一个数组,而我想对整个数组进行切片以获得由作为索引的第 5 个字符组成的列,然后由以下 5 个其他字符组成的列,这是第一个特征,然后是其他 5 个字符,依此类推.. 我猜分解是最好的解决方案

标签: python arrays string slice


【解决方案1】:

有很多方法可以将函数应用于 numpy 数组,其中一种是:

np_truncated = np.vectorize(lambda x: x[:5])(np_base)

在大多数情况下,您使用迭代附加列表的方法通常是性能最低的解决方案。


或者,如果您打算使用许多列,您可能想要使用pandas

import pandas as pd    
df = pd.DataFrame(np_base, columns=["Raw"])
truncated = df.Raw.str.slice(0,5)

【讨论】:

  • 您好,非常感谢,我尝试了矢量化方法,正如我所料,它奏效了。这基本上是我正在寻找的功能,但我对 Python 很陌生,所以我无法弄清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 2020-11-27
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
相关资源
最近更新 更多