如何在Python中实现一维NumPy数组与列向量数组的互转?
NumPy一维数组与列向量二维数组互转方法
一维数组转列向量二维数组
假设你的一维数组是arr,可以通过以下几种简单方式完成转换:
方法1:用
reshape指定维度reshape(-1, 1)里的-1会让NumPy自动计算对应维度的元素数量,刚好适配你的一维数组长度:import numpy as np arr = np.array([15, 15, 15, 15, 15, 15, 15, 15, 3, 8, 13, 13, 15, 15, 15, 15, 6]) col_vector = arr.reshape(-1, 1)方法2:添加新轴
[:, np.newaxis]
通过索引语法直接给数组新增一个列方向的维度:col_vector = arr[:, np.newaxis]方法3:使用
np.expand_dims扩展维度
指定axis=1来添加列维度:col_vector = np.expand_dims(arr, axis=1)
列向量二维数组转回一维数组
你提到.flatten()、.ravel()无效,大概率是没接收方法返回的结果(这两个方法不会修改原数组,而是返回转换后的新数组/视图)。试试这些方法:
方法1:
reshape(-1)一键降维arr_1d = col_vector.reshape(-1)方法2:
.flatten()返回一维数组arr_1d = col_vector.flatten()方法3:
.ravel()生成一维视图(更省内存)arr_1d = col_vector.ravel()方法4:直接索引取列
因为列向量是(n,1)形状的二维数组,取第一列就能得到一维数组:arr_1d = col_vector[:, 0]
内容的提问来源于stack exchange,提问作者JRMBAL
相关产品推荐
相关产品推荐

