如何在Numpy中将列表添加至空数组且生成二维数组而非一维?
嘿,我来帮你搞定这个numpy数组拼接的小问题~ 你之前用np.append()得到一维数组,是因为默认会把输入的数组扁平化处理,想要得到二维的结构,我们可以用这几种方法:
方法一:用
numpy.vstack()垂直堆叠 这个方法适合从空数组开始逐步添加行,关键是要把列表转换成二维的行数组,和空数组的维度匹配:
import numpy as np x = np.empty(0) l1 = [1, 2, 3] l2 = [4, 5, 6] # 把列表转成二维行数组(reshape(1,-1)自动适配列数) arr_l1 = np.array(l1).reshape(1, -1) arr_l2 = np.array(l2).reshape(1, -1) # 垂直堆叠空数组和两个行数组 x = np.vstack([x, arr_l1, arr_l2]) print(x) # 输出结果: # [[1 2 3] # [4 5 6]]
方法二:给
numpy.append()指定axis参数 如果你还是想用append,只要提前把空数组改成二维结构,并且添加时把列表包装成二维数组,再指定按行追加的axis=0就行:
import numpy as np # 先把空数组设置成0行3列的二维结构 x = np.empty(0).reshape(0, 3) l1 = [1, 2, 3] l2 = [4, 5, 6] # 用[l1]把列表转成二维行数组,指定axis=0按行追加 x = np.append(x, [l1], axis=0) x = np.append(x, [l2], axis=0) print(x) # 输出结果: # [[1 2 3] # [4 5 6]]
方法三:最简洁的直接转换
如果不需要从空数组逐步添加,直接把两个列表放进一个大列表里转成numpy数组就完事了:
import numpy as np l1 = [1, 2, 3] l2 = [4, 5, 6] x = np.array([l1, l2]) print(x) # 输出结果: # [[1 2 3] # [4 5 6]]
内容的提问来源于stack exchange,提问作者Vincenzo
相关产品推荐
相关产品推荐

