为了账号安全,请及时绑定邮箱和手机立即绑定

形状(150,)和形状(150,1)有什么区别?

形状(150,)和形状(150,1)有什么区别?

catspeake 2021-12-17 16:45:05
形状(150,)和形状(150,1)有什么区别?我认为它们是相同的,我的意思是它们都代表一个列向量。
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

两者具有相同的值,但一个是向量,另一个是向量的矩阵。下面是一个例子:


import numpy as np

x = np.array([1, 2, 3, 4, 5])

y = np.array([[1], [2], [3], [4], [5]])

print(x.shape)

print(y.shape)

输出是:


(5,)

(5, 1)


查看完整回答
反对 回复 2021-12-17
?
MM们

TA贡献1886条经验 获得超2个赞

虽然它们在内存中占据相同的空间位置

我认为它们是相同的,我的意思是它们都代表一个列向量。

不,它们不是,当然也不是根据 NumPy(ndarrays)。

主要区别在于

shape (150,)=> 是一个一维数组,而
shape (150,1)=> 是一个二维数组


查看完整回答
反对 回复 2021-12-17
?
慕斯709654

TA贡献1840条经验 获得超5个赞

像这样的问题似乎来自两个误解。


没有意识到这(5,)是一个 1 元素元组。

期待像矩阵一样的 MATLAB

使用方便的arange函数创建一个数组:


In [424]: x = np.arange(5)                                                      

In [425]: x.shape                                                               

Out[425]: (5,)             # 1 element tuple

In [426]: x.ndim                                                                

Out[426]: 1

numpy不会自动生成矩阵、二维数组。在这方面它没有遵循 MATLAB。


我们可以重塑该数组,添加第二维。结果是view(迟早你需要了解这意味着什么):


In [427]: y = x.reshape(5,1)                                                    

In [428]: y.shape                                                               

Out[428]: (5, 1)

In [429]: y.ndim                                                                

Out[429]: 2

这两个阵列的显示非常不同。相同的数字,但括号的布局和数量有很大不同,反映了各自的形状:


In [430]: x                                                                     

Out[430]: array([0, 1, 2, 3, 4])

In [431]: y                                                                     

Out[431]: 

array([[0],

       [1],

       [2],

       [3],

       [4]])

形状差异可能看起来很学术 - 直到您尝试使用数组进行数学运算:


In [432]: x+x                                                                   

Out[432]: array([0, 2, 4, 6, 8])     # element wise sum

In [433]: x+y                                                                   

Out[433]: 

array([[0, 1, 2, 3, 4],

       [1, 2, 3, 4, 5],

       [2, 3, 4, 5, 6],

       [3, 4, 5, 6, 7],

       [4, 5, 6, 7, 8]])

这最终是如何产生一个 (5,5) 数组的?用 (5,1) 数组广播 (5,) 数组!


查看完整回答
反对 回复 2021-12-17
  • 3 回答
  • 0 关注
  • 406 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号