You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建Numpy数组并处理字符串:去空格、逗号换句号

NumPy数组字符串处理解决方案

处理需求

对给定的NumPy字符串数组执行两项操作:

  1. 移除字符串中的所有空格
  2. 将字符串中的逗号替换为句号

原始数组创建

先将你提供的数据转为NumPy数组:

import numpy as np

arr = np.array([
    ['ALIOR', 'PLALIOR00045', '88 860 000', '1 386 216 000', '0,891', '2,16', '14'],
    ['CCC', 'PLCCC0000016', '27 918 000', '1 292 603 400', '0,831', '5,28', '42'],
    ['CDPROJEKT', 'PLOPTTC00011', '67 348 000', '22 864 646 000', '14,702', '7,39', '7'],
    ['CYFRPLSAT', 'PLCFRPT00013', '275 301 000', '6 854 994 900', '4,408', '1,17', '14'],
    ['DINOPL', 'PLDINPL00011', '47 937 000', '8 916 282 000', '5,733', '9,13', '12'],
    ['JSW', 'PLJSW0000015', '52 636 000', '716 902 320', '0,461', '1,51', '24'],
    ['KGHM', 'PLKGHM000017', '136 410 000', '9 881 540 400', '6,354', '4,78', '8'],
    ['LOTOS', 'PLLOTOS00025', '86 543 000', '5 609 717 260', '3,607', '2,91', '16'],
    ['LPP', 'PLLPP0000011', '1 306 000', '7 444 200 000', '4,787', '1,43', '19'],
    ['MBANK', 'PLBRE0000012', '12 997 000', '2 830 746 600', '1,820', '0,42', '24'],
    ['ORANGEPL', 'PLTLKPL00017', '647 357 000', '4 285 503 340', '2,756', '1,16', '13'],
    ['PEKAO', 'PLPEKAO00016', '176 379 000', '9 619 710 660', '6,185', '5,27', '9'],
    ['PGE', 'PLPGER000010', '796 776 000', '3 561 588 720', '2,290', '2,88', '18'],
    ['PGNIG', 'PLPGNIG00014', '1 624 608 000', '6 072 784 704', '3,905', '1,56', '12'],
    ['PKNORLEN', 'PLPKN0000018', '289 049 000', '17 701 360 760', '11,382', '12,44', '8'],
    ['PKOBP', 'PLPKO0000016', '857 593 000', '18 807 014 490', '12,093', '10,49', '9'],
    ['PLAY', 'LU1642887738', '114 151 000', '3 696 209 380', '2,377', '1,47', '16'],
    ['PZU', 'PLPZU0000011', '568 305 000', '17 515 160 100', '11,262', '6,64', '6'],
    ['SANPL', 'PLBZ00000044', '33 207 000', '5 213 499 000', '3,352', '1,91', '18'],
    ['TAURONPE', 'PLTAURN00011', '1 043 590 000', '1 252 308 000', '0,805', '1,21', '33']
], dtype='<U14')

解决方案

方法1:使用NumPy向量化字符串操作(效率最高)

利用numpy.char模块的内置方法,直接对整个数组执行批量操作,无需循环:

# 第一步:移除所有空格
arr_no_spaces = np.char.replace(arr, ' ', '')
# 第二步:替换逗号为句号
processed_arr = np.char.replace(arr_no_spaces, ',', '.')

# 查看结果
print(processed_arr)

方法2:自定义处理函数+np.vectorize(灵活性强)

如果需要扩展更复杂的处理逻辑,可以封装函数后用np.vectorize转为数组可用的函数:

def process_str(s):
    return s.replace(' ', '').replace(',', '.')

# 向量化处理函数
vec_process = np.vectorize(process_str)
processed_arr = vec_process(arr)

方法3:列表推导式(直观易懂,适合小型数组)

通过嵌套列表推导遍历每个元素,处理后转回NumPy数组:

processed_arr = np.array([
    [s.replace(' ', '').replace(',', '.') for s in row]
    for row in arr
])

进阶:仅处理特定列

如果只需要处理数字相关的列(比如第3到第7列,索引从2开始),可以针对性修改:

processed_arr = arr.copy()
# 仅处理第3列到最后一列
processed_arr[:, 2:] = np.char.replace(
    np.char.replace(processed_arr[:, 2:], ' ', ''),
    ',', '.'
)

内容的提问来源于stack exchange,提问作者Harsh Shukla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:37:02