当前位置: 首页 > 知识库问答 >
问题:

对于np.数组([1,2,3]),为什么形状是(3,)而不是(3,1)?[副本]

相高谊
2023-03-14

我注意到,对于具有3个元素的秩1数组,numpy返回(3,)作为形状。我知道这个元组表示数组沿每个维度的大小,但为什么不是(3,1)?

import numpy as np

a = np.array([1, 2, 3])  # Create a rank 1 array
print a.shape            # Prints "(3,)"

b = np.array([[1,2,3],[4,5,6]])   # Create a rank 2 array
print b.shape                     # Prints "(2, 3)"

共有2个答案

苏嘉歆
2023-03-14

你同样可以问,为什么形状不是(3,1,1,1,1,1,1)?毕竟,它们是等价的。

NumPy经常选择折叠单个维度,或者将其视为可选维度,例如在广播期间。这是强大的,因为3矢量与3x1x1矩阵具有完全相同的元素数量和相同的相对方向。

申屠英韶
2023-03-14

简而言之,这是因为它是一维数组(因此是单元素形状元组)。或许以下内容有助于澄清问题:

>>> np.array([1, 2, 3]).shape
(3,)
>>> np.array([[1, 2, 3]]).shape
(1, 3)
>>> np.array([[1], [2], [3]]).shape
(3, 1)

我们甚至可以去三维(甚至更高):

>>> np.array([[[1]], [[2]], [[3]]]).shape
(3, 1, 1)
 类似资料:
  • 我最近遇到了几个错误,因为Numpy数组的形状是(x)-这些可以很容易地通过下面的代码段修复 但这确实让我想知道,为什么(x,)是1D数组的默认形状?

  • 问题内容: 我正在一个JavaScript项目上,只是想知道为什么对象实例不继承和其他方法,而不必调用超类(superobject?)方法。 我看过了MDN文档,实际上有“非标准”属性方法。 但这些已被弃用。为什么要转向方法? 在我看来,类似的东西比更好。对于其他一些Object方法,我也会说同样的话。 问题答案: 这是为了避免发生冲突-通常情况下,对象的问题不具有所需值的属性。 JS中的对象通常

  • 在的情况下,将检索添加的元素。在的情况下,方法调用对所传递的字符串没有影响。JVM到底在做什么?有人能详细解释一下吗?

  • 我的讲师在课堂上问过我这个问题,我想知道为什么是宏而不是函数?

  • 问题内容: 我正在尝试该功能。 从numpy文档中,我了解到,如果仅给出一个数组作为输入,它应该返回该数组非零的索引(即“ True”): 如果仅给出条件,则返回元组condition.nonzero(),其中condition为True的索引。 但是,如果尝试一下,它将返回一个包含两个元素的 元组 ,其中第一个是所需的索引列表,第二个是空元素: 所以问题是:为什么?这种行为的目的是什么?在什么情

  • 本文向大家介绍为什么卷积核一般都是3*3而不是更大?相关面试题,主要包含被问及为什么卷积核一般都是3*3而不是更大?时的应答技巧和注意事项,需要的朋友参考一下 主要有这2点原因: 第一,相对于用较大的卷积核,使用多个较小的卷积核可以获得相同的感受野和能获得更多的特征信息,同时使用小的卷积核参数更少,计算量更小。 第二:你可以使用更多的激活函数,有更多的非线性,使得在你的CNN模型中的判决函数有更有