【发布时间】:2019-06-16 08:08:16
【问题描述】:
在下面的代码中,我希望 arr2 返回与 lst2 相同的字符串列表,但事实并非如此。为什么lst2 和arr2 不同?是否有任何 NumPythonic 方法可以使 arr2 返回与 lst2 相同的字符串列表?
代码:
import numpy as np
lst = [['MI', '', 'P'],
['B', 'N', 'SUFS'],
['KOS', 'XJRXA', 'JJHW'],
['ARI', 'TPKI', ''],
['VR', 'EYR', '']]
arr = np.array(lst)
arr2 = np.apply_along_axis(lambda x: "".join(x), 1, arr)
lst2 = list(map(lambda x: "".join(x), lst))
print('lst:', lst)
print('arr:', arr.tolist())
print('lst2:', lst2)
print('arr2:', arr2.tolist())
输出:
lst: [['MI', '', 'P'], ['B', 'N', 'SUFS'], ['KOS', 'XJRXA', 'JJHW'], ['ARI', 'TPKI', ''], ['VR', 'EYR', '']]
arr: [['MI', '', 'P'], ['B', 'N', 'SUFS'], ['KOS', 'XJRXA', 'JJHW'], ['ARI', 'TPKI', ''], ['VR', 'EYR', '']]
lst2: ['MIP', 'BNSUFS', 'KOSXJRXAJJHW', 'ARITPKI', 'VREYR']
arr2: ['MIP', 'BNS', 'KOS', 'ARI', 'VRE']
【问题讨论】:
-
apply_along_axis不是对简单行迭代的改进。它并不快。