gpt4 book ai didi

python - Numpy 数组更改内部元素的值

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:18 27 4
gpt4 key购买 nike

我在 numpy 中创建一个数组作为

a = np.ones([5 , 5])

然后我将得到一个全为 1 的 5x5 数组输出。我想将外部元素保留为 1,将内部元素保留为 0。所以我希望输出为:

[[ 1.  1.  1.  1.  1.]
[ 1. 0. 0. 0. 1.]
[ 1. 0. 0. 0. 1.]
[ 1. 0. 0. 0. 1.]
[ 1. 1. 1. 1. 1.]]

有什么方法可以让我们在一行中做到这一点? (我读过 inner() 但我不知道如何让它与这个单一数组一起工作)

最佳答案

是的,我们可以为此使用切片:

a[1:-1, 1:-1] = 0

或者对于通用的多维数组:

a[(slice(1, -1),) * a.ndim] = 0

但通常以另一种方式构建这样的矩阵会更好。这会产生:

>>> a = np.ones([5 , 5])
>>> a[1:-1, 1:-1] = 0
>>> a
array([[1., 1., 1., 1., 1.],
[1., 0., 0., 0., 1.],
[1., 0., 0., 0., 1.],
[1., 0., 0., 0., 1.],
[1., 1., 1., 1., 1.]])

例如对于 3d 案例(想象某种立方体):

>>> a = np.ones([5 , 5, 5])
>>> a[(slice(1, -1),) * a.ndim] = 0
>>> a
array([[[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]],

[[1., 1., 1., 1., 1.],
[1., 0., 0., 0., 1.],
[1., 0., 0., 0., 1.],
[1., 0., 0., 0., 1.],
[1., 1., 1., 1., 1.]],

[[1., 1., 1., 1., 1.],
[1., 0., 0., 0., 1.],
[1., 0., 0., 0., 1.],
[1., 0., 0., 0., 1.],
[1., 1., 1., 1., 1.]],

[[1., 1., 1., 1., 1.],
[1., 0., 0., 0., 1.],
[1., 0., 0., 0., 1.],
[1., 0., 0., 0., 1.],
[1., 1., 1., 1., 1.]],

[[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]]])

关于python - Numpy 数组更改内部元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48559167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com