Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python缩进numpy矩阵会产生与完全打印矩阵不同的结果_Python_Numpy_Matrix - Fatal编程技术网

Python缩进numpy矩阵会产生与完全打印矩阵不同的结果

Python缩进numpy矩阵会产生与完全打印矩阵不同的结果,python,numpy,matrix,Python,Numpy,Matrix,打印ndarray对象似乎会产生与缩进ndarray本身不同的结果 在我的代码中,我使用了128x128个元素的数组,这些元素大部分包含零,但也包含一些非平凡的数字,并以两种不同的方式将它们打印出来。我用过的第一个 print(array[:][32]) print(array[33][32]) 第二,我用了 print(array[:][32]) print(array[33][32]) 尝试查找33个元素的值 当我使用前一种方法时,在元素33,32处得到0。用后者,我得到23分。在如

打印ndarray对象似乎会产生与缩进ndarray本身不同的结果

在我的代码中,我使用了128x128个元素的数组,这些元素大部分包含零,但也包含一些非平凡的数字,并以两种不同的方式将它们打印出来。我用过的第一个

print(array[:][32])
print(array[33][32])
第二,我用了

print(array[:][32])
print(array[33][32])
尝试查找33个元素的值

当我使用前一种方法时,在元素33,32处得到0。用后者,我得到23分。在如何使用Ndarray方面,我是否缺少一个微妙之处

不要像现在这样“两次”索引2D数组,这不是Numpy的正确语法。相反,你应该:

print(array[:, 32])

取决于您试图实际提取的值。顶部的
print
语句为您提供数组的
32
nd列(在您的情况下,它应该是一个1D的shape数组
(128,)
),而后面的
print
语句应该只为您提供行
33
,列
32
的单个值

解释
  • array[:][32]

    • array[:]
      将只返回整个数组。因此,
      array[:][32]
      相当于只调用
      array[32]
      。这将返回
      array
      32
      第二行(从
      0
      开始计数),在您的情况下,该行应包含
      128
  • 数组[33][32]

    • array[33]
      将返回2D数组的
      33
      rd行。这将是一个1D形状数组
      (128,)
      。接下来,索引
      [32]
      将应用于返回的行,因此您将在行
      33
      32
      处得到一个值。因此,在这种情况下:

      array[33][32] == array[33, 32]
      
    • 然而,重复索引语法仍然是一个坏主意。它比使用像
      array[33,32]
      这样的语法要慢(因为
      array[33][32]
      将触发两个单独的索引操作)。此外,它还可能导致意外行为。例如,如果要尝试为索引值赋值:

      array[33][32] = 19
      
      这可能不会改变
      数组中的任何值,因为重复索引操作
      数组[33][32]
      可能会返回原始数组的副本


这取决于33元素值的含义。这里处理的是二维矩阵

请注意,为了简单起见。对于(x+1)行,我会说是第x行

在第二种情况下,您使用的是
33行和
32列中的元素,它相当于
array[33,32]

在第一种情况下,返回第32行

需要注意的是,这里您正在进行链索引


array[:,32]
(它将返回第32列的所有值)并不等同于
array[:][32]
先返回数组,然后再返回第32行。

我想你忘了完成文章。什么都没忘。我正在修改它,很抱歉在概念上有困难。那么调用数组[:,32]和数组[:][32]之间有什么区别呢?请参阅我解释部分的第一部分。您可以将
array[:][32]
简化为
array[32]
,这将返回
32
nd行。另一方面,
array[:,32]
表示类似“返回每行中的第32个条目”,或者,换句话说,
32
nd列。@tel-ah我明白了,非常感谢您再次检查array[:][32]将返回array[:]然后返回array[32]?是的,您是对的,当您执行array[:]时,就像什么都不做一样。因此,基本上就像在使用数组执行数组[:][32]时调用数组[32],而
[:]
什么都不做,它甚至不是占位符
arr[:,32]
是索引二维数组的有效方法
arr[:][32]
arr[32]
相同,也可以写成
arr[32,:]