昊虹君 发表于 2022-11-8 13:57

ndarray对象在数据选取时既可以用“[ ]”区分不同的维度,也可以用逗号分隔,那么哪个更好呢?

ndarray对象在数据选取时既可以用“[ ]”区分不同的维度,也可以用逗号分隔,那么哪个更好呢?

现在有一个矩阵B,其尺寸为两行四列三通道。
我们想选取矩阵B的第1通道的第1行,有以下两种方法实现。

方法一:用“[ ]”区分不同的维度
示例代码如下:
import numpy as np

B = np.array([[,
               ],
            [,
               ],
            [,
               ]])

E = B# 选取矩阵B的第1通道的第1行的第一种方法
运行结果如下:
http://pic1.hhai.cc/pic1/2022/2022-11/002/062.png
                                          
http://pic1.hhai.cc/pic1/2022/2022-11/002/063.png

方法二:用逗号分隔不同的维度
import numpy as np

B = np.array([[,
               ],
            [,
               ],
            [,
               ]])

F = B# 选取矩阵B的第1通道的第1行的第二种方法
运行结果如下:
http://pic1.hhai.cc/pic1/2022/2022-11/002/064.png
                                          
http://pic1.hhai.cc/pic1/2022/2022-11/002/065.png

上面这个示例中,两种方法没有区别,但是处理下面这个问题时就有区别了,甚至方法一根本不行。

矩阵A是一个9×9的零矩阵,我想把其第三行到第五行,第三列到第五列的元素的值置为5。
此时用[ ]区分不同的维度是不行的,代码如下:
import numpy as np

A = np.zeros((9, 9), dtype='uint8')

A = 5
运行结果如下:
http://pic1.hhai.cc/pic1/2022/2022-11/002/066.png
从以上运行结果可以看出,并没有达到我们想要的效果,
但如果用逗号分隔不同的维度,即把把代码“A = 5”改成“A = 5”就可以实现我们想要的效果了。
修改之后的代码如下:
import numpy as np

A = np.zeros((9, 9), dtype='uint8')

A = 5
运行结果如下:
http://pic1.hhai.cc/pic1/2022/2022-11/002/067.png
从上面的运行结果来看,用逗号分隔不同的维度实现了我们想要的效果。
页: [1]
查看完整版本: ndarray对象在数据选取时既可以用“[ ]”区分不同的维度,也可以用逗号分隔,那么哪个更好呢?