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

numpy中这些数组形状之间的区别

雍飞雨
2023-03-14

形状为-

(442,1)和(442,)?

打印这两个命令会产生相同的输出,但当我检查等式==时,会得到如下2D向量-

array([[ True, False, False, ..., False, False, False],
       [False,  True, False, ..., False, False, False],
       [False, False,  True, ..., False, False, False],
       ..., 
       [False, False, False, ...,  True, False, False],
       [False, False, False, ..., False,  True, False],
       [False, False, False, ..., False, False,  True]], dtype=bool)

有人可以解释其中的区别吗?

共有1个答案

慕凌龙
2023-03-14

形状数组 (442, 1) 是 2 维的。它有 442 行和 1 列。

形状(442,)的数组是一维的,由442个元素组成。

请注意,它们的reprs看起来也应该不同。括号的数量和位置有所不同:

In [7]: np.array([1,2,3]).shape
Out[7]: (3,)

In [8]: np.array([[1],[2],[3]]).shape
Out[8]: (3, 1)

请注意,您可以使用np。挤压以移除长度为1的轴:

In [13]: np.squeeze(np.array([[1],[2],[3]])).shape
Out[13]: (3,)

NumPy广播规则允许在需要时在左侧自动添加新轴。因此< code>(442,)可以广播到< code>(1,442)。长度为1的轴可以广播到任何长度。因此,当您测试shape (442,1)数组和shape (442,)数组之间的相等性时,第二个数组被提升为shape (1,442)数组,然后这两个数组扩展其长度为1的轴,以便它们都成为shape (442,442)的广播数组。这就是为什么当您测试相等性时,结果是shape (442,442)的布尔数组。

In [15]: np.array([1,2,3]) == np.array([[1],[2],[3]])
Out[15]: 
array([[ True, False, False],
       [False,  True, False],
       [False, False,  True]], dtype=bool)

In [16]: np.array([1,2,3]) == np.squeeze(np.array([[1],[2],[3]]))
Out[16]: array([ True,  True,  True], dtype=bool)
 类似资料:
  • 人们似乎在说malloc在使用数组时有多棒,当你不知道一个数组在编译时有多少元素时,你可以使用它(?)。没有malloc你就不能这么做吗?例如,如果我们知道一个字符串的最大长度为10,那么下面的结果是否足够接近同一事物?。。。除了能够释放内存之外。 和

  • 问题内容: 我可能现在应该知道这一点,但是以下两个语句之间的区别是什么? 嵌套联接: 比较传统的联接: 问题答案: 好吧,这是操作的顺序。 可以改写为: 因此,基本上,首先根据连接条件:t3将t2与t3左连接,然后在table2_ID = table1_ID上与t2对IN1进行t1内连接。 在第二个示例中,首先将INNER JOIN t1与t2组合在一起,然后在条件table2_ID = tabl

  • 问题内容: 我尝试了解如何使用来处理数组(线性代数中的向量)。 在以下示例中,我生成两个 和: 对我来说,和根据线性代数定义具有相同的形状:1列,3列,但不适合。 现在,该 产品: 我有三个不同的输出。 和之间有什么区别?为什么点不起作用? 这些点产品也存在一些差异: 问题答案: 请注意,您不仅在处理一维数组: 因此,是2D阵列。您还可以在:(1,3)的输出中看到这一点,因为(3,)是一个维度,它

  • 主要内容:1. numpy.arange(),2. numpy.linspace(),3. numpy.logspace所谓区间数组,是指数组元素的取值位于某个范围内,并且数组元素之间可能会呈现某种规律,比如等比数列、递增、递减等。 为了方便科学计算,Python NumPy 支持创建区间数组。 1. numpy.arange() 在 NumPy 中,您可以使用 arange() 来创建给定数值范围的数组,语法格式如下: numpy.arange(start, stop, step, dtype

  • 下面是一些React/JS代码:有区别吗: 和 非常感谢

  • 问题内容: 在Go的整个Google App Engine文档中,它们可互换使用库。这是一个例子: 我应该使用哪些库?主要区别是什么? 问题答案: cloud.google.com/go/datastore是Cloud Datastore rest API(可从任何地方使用)的客户端库。 google.golang.org/appengine/datastore是App Engine API的一部