如何正确将numpy数组组拆分为多个独立数组?
拆分Numpy数组组为独立数组的正确方法
你现在的需求是把包含两个二维Numpy数组的列表array1,拆分成所有行都作为独立数组的集合对吧?先看看你之前代码的问题:
你用了array2.append(a),而np.array_split(x, len(x))返回的是一个包含多个子数组的列表,所以append会把这个整个列表作为一个元素加到array2里,最终array2就变成了[拆分后的第一个数组列表, 拆分后的第二个数组列表],长度自然还是2。
要实现你的需求,我们需要把拆分后的每个子数组单独添加到array2中,而不是添加整个列表。这里有几种简洁的实现方式:
方法一:使用extend替代append
import numpy as np array2 = [] for x in array1: # 将当前二维数组按行拆分为单个数组 split_rows = np.array_split(x, len(x)) # 把拆分后的所有数组逐个添加到array2中 array2.extend(split_rows)
方法二:嵌套循环直接遍历行
如果不需要array_split,也可以直接遍历每个二维数组的行,保持和你预期一致的二维形状(每个子数组是(1, 列数)的形式):
array2 = [] for x in array1: for row in x: # 把一维的行转成二维数组(和你之前拆分的格式一致) array2.append(row.reshape(1, -1))
方法三:列表推导式(更简洁)
用一行代码就能完成:
array2 = [row.reshape(1, -1) for arr in array1 for row in arr]
执行完以上任意一种方法后,len(array2)就会等于两个二维数组的总行数,每个元素都是独立的单个行数组啦。
内容的提问来源于stack exchange,提问作者Muugii
相关产品推荐
相关产品推荐

