如何在numpy中创建元素为向量的矩阵,实现二维列表按向量元素存储为行
NumPy创建元素为向量的矩阵实现方法
你需要的效果有两种主流实现方案,分别对应不同的使用场景:
方案1:使用高维数值数组(优先推荐)
这种方案可以保留NumPy的原生向量化运算能力,性能更优。你需要的「1行、2个向量元素」的结构本质上是形状为(1, 2, 2)的三维数组,第一维长度1代表行数,第二维长度2代表每行的元素个数,第三维长度2代表每个向量的长度。
实现代码如下:
import numpy as np raw_data = [[1,2],[3,4]] # 在原始二维数组的基础上新增行维度 target_arr = np.expand_dims(np.array(raw_data), axis=0) # 验证效果 print(target_arr.shape) # 输出:(1, 2, 2) print(target_arr[0, 0]) # 取第一行第一个元素,输出:[1 2] print(target_arr[0, 1]) # 取第一行第二个元素,输出:[3 4]
你也可以用索引语法直接新增维度:target_arr = np.array(raw_data)[np.newaxis, :],效果完全一致。
方案2:使用对象类型数组
如果你确实需要数组的直接元素就是独立的向量对象(比如后续需要修改单个向量的长度等场景),可以指定数组dtype为object,这种数组的形状就是(1,2),每个元素都是单独的NumPy向量。
实现代码如下:
import numpy as np # 先创建指定形状的空对象数组 target_arr = np.empty((1, 2), dtype=object) # 给每个位置赋值向量 target_arr[0, 0] = np.array([1,2]) target_arr[0, 1] = np.array([3,4]) # 验证效果 print(target_arr.shape) # 输出:(1, 2) print(type(target_arr[0, 0])) # 输出:<class 'numpy.ndarray'>
注意:对象数组无法支持NumPy的批量数值运算,性能也远低于数值类型数组,非特殊需求不建议使用。
内容的提问来源于stack exchange,提问作者invictus
相关产品推荐
相关产品推荐

