函数reshape(-1,)里的-1的意思

reshape函数是对narray的数据结构进行维度变换,由于变换遵循对象元素个数不变,在进行变换时,假设一个数据对象narray的总元素个数为N,如果我们给出一个维度为(m,-1)时,我们就理解为将对象变换为一个二维矩阵,矩阵的第一维度大小为m,第二维度大小为N/m。

简单来说,-1是指reshape之后的array的新形状"面积"是与原始形状相同。-1就表示未知的长或者宽。

numpy 允许我们将新的形状参数之一指定为 -1(例如:(2,-1) 或 (-1,3) 但不是 (-1, -1))。 它只是意味着它是一个未知的维度,我们希望 numpy 找出它。 numpy 将通过查看"数组的长度和剩余维度"并确保它满足上述标准来计算这一点。

举个例子:

python 复制代码
z = np.array([[1, 2, 3, 4],
         [5, 6, 7, 8],
         [9, 10, 11, 12]])
z.shape
(3, 4)

array z的"面积"是3*4;

现在尝试用 (-1) reshape z的形状。 结果新形状是 (12,) 并且与原始形状 (3,4) 兼容:

python 复制代码
z.reshape(-1)
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

现在尝试用 (-1, 1) 重塑。 列数("宽度")被设定为 作为 1 但行数("高度")是-1,也就是未知的 。 所以我们得到结果新形状为 (12, 1).,与原始形状(3,4)的"面积"相同(12*1 = 3*4)。

python 复制代码
z.reshape(-1,1)
array([[ 1],
   [ 2],
   [ 3],
   [ 4],
   [ 5],
   [ 6],
   [ 7],
   [ 8],
   [ 9],
   [10],
   [11],
   [12]])

以上与 numpy 建议/错误消息一致,对单个功能使用 reshape(-1,1); 即单列

Reshape your data using array.reshape(-1, 1) if your data has a single feature

同理还有

Reshape your data using array.reshape(1, -1) if it contains a single sample

最后,如果我们尝试将两个维度都提供为未知,即新形状为 (-1,-1)。 它会抛出错误:

python 复制代码
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
相关推荐
李昊哲小课21 分钟前
深度学习高级教程:基于生成对抗网络的五子棋对战AI
人工智能·深度学习·生成对抗网络
TDengine (老段)23 分钟前
TDengine IDMP 产品路线图
大数据·数据库·人工智能·ai·时序数据库·tdengine·涛思数据
小白学大数据29 分钟前
基于文本检测的 Python 爬虫弹窗图片定位与拖动实现
开发语言·爬虫·python
hoiii18729 分钟前
MATLAB中主成分分析(PCA)与相关性分析的实现
前端·人工智能·matlab
不叫猫先生32 分钟前
AI Prompt 直达生产级爬虫,Bright Data AI Scraper Studio 让数据抓取更高效
人工智能·爬虫·prompt
老蒋新思维33 分钟前
创客匠人启示录:AI 时代知识变现的底层逻辑重构 —— 从峰会实践看创始人 IP 的破局之路
网络·人工智能·网络协议·tcp/ip·数据挖掘·创始人ip·创客匠人
大千AI助手36 分钟前
Softmax回归:原理、实现与多分类问题的基石
人工智能·机器学习·分类·数据挖掘·回归·softmax·大千ai助手
努力的BigJiang1 小时前
ORB-SLAM2在ubuntu20.04中的复现记录(跑数据集+ROS)(ROS接口失败版)
python
机器之心1 小时前
谷歌TPU杀疯了,产能暴涨120%、性能4倍吊打,英伟达还坐得稳吗?
人工智能·openai
币圈菜头1 小时前
GAEA × REVOX 合作 — 共建「情感 AI + Web3 应用」新生态
人工智能·web3·去中心化·区块链