当前位置: 首页 > 面试题库 >

这些数组形状之间的差异numpy

尉迟德惠
2023-03-14
问题内容

2个形状为-的数组有什么区别?

(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)

有人可以解释差异吗?


问题答案:

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

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

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

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

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

请注意,您可以np.squeeze用来删除长度为1的轴:

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

NumPy广播规则允许在需要时
在左侧 自动添加新轴。因此(442,)可以广播到(1, 442)。长度为1的轴可以广播到任意长度。因此,当你测试形状的阵列之间的相等(442, 1)和形状的阵列(442, ),所述第二阵列被提升到形状(1, 442),然后将两个阵列扩大它们的长度1上,使得它们都成为广播形状的阵列的轴(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)


 类似资料:
  • 形状为- (442,1)和(442,)? 打印这两个命令会产生相同的输出,但当我检查等式==时,会得到如下2D向量- 有人可以解释其中的区别吗?

  • 在中,有些操作以的形式返回,但有些操作返回。这将使矩阵乘法更加繁琐,因为需要显式

  • 问题内容: 我有以下两个数组。我想要这两个数组之间的区别。也就是说,如何找到两个数组都不存在的值? 问题答案: 注意: 这个答案将返回的值是不存在的,它不会返回值不在。

  • 可能重复: 原始数组与ArrayList 在java中,列表和数组有什么区别?或数组和矢量之间的区别!

  • 问题内容: 因此,如果我有两套: 有没有一种方法可以比较它们,只返回一组4和5? 问题答案: 试试这个 设置#removeAll 从此集合中删除所有包含在指定集合中的元素(可选操作)。如果指定的集合也是一个集合,则此操作会有效地修改此集合,以使其值为两个集合的非对称集合差异。

  • 正在经历这里提到的Java8个特性。无法理解并行排序()的确切作用。有人能解释一下和之间的实际区别吗?

  • 问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。

  • 在swift中似乎有两个相等运算符:双相等()和三相等(),这两者有什么区别?