【发布时间】:2023-09-10 07:17:01
【问题描述】:
我有以下三个 numpy 数组:
a = np.array([ 1, 2, 3, 4, 2, 3, 4 ])
b = np.array([ [1], [2,3,4], [], [2,3,4] ])
c = np.array([ 1, [2,[3,4]], [], [2,3,4] ])
如何使用单个函数 f 来处理所有三个数组,以不变的顺序和不变的类型返回所有子列表中的值?
所以答案应该是 f(a) == f(b) == f(c) == a。
我在这里发现了以下技巧 (Concatenation of inner lists or ints):
def f(b):
np.array([a for x in np_array for a in (x if isinstance(x, list) else [x])])
但这不适用于数组 c。
【问题讨论】:
-
可能是错字?您需要
def f(b)中的return语句。 -
确实有一些拼写错误:缺少返回语句,并且 c = np.array([ [1], [2,[3,4]], [], [2,3,4] ])
-
如果你不关心元素比较,那么你可以实现类似这个生成器解决方案:*.com/a/2158532/1634191