Python缩进numpy矩阵会产生与完全打印矩阵不同的结果
打印ndarray对象似乎会产生与缩进ndarray本身不同的结果 在我的代码中,我使用了128x128个元素的数组,这些元素大部分包含零,但也包含一些非平凡的数字,并以两种不同的方式将它们打印出来。我用过的第一个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分。在如
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]
将返回2D数组的array[33]
rd行。这将是一个1D形状数组33
。接下来,索引(128,)
将应用于返回的行,因此您将在行[32]
列33
处得到一个值。因此,在这种情况下:32
array[33][32] == array[33, 32]
- 然而,重复索引语法仍然是一个坏主意。它比使用像
这样的语法要慢(因为array[33,32]
将触发两个单独的索引操作)。此外,它还可能导致意外行为。例如,如果要尝试为索引值赋值:array[33][32]
这可能不会改变array[33][32] = 19
数组中的任何值,因为重复索引操作
可能会返回原始数组的副本数组[33][32]
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,:]
。