我是编程新手,请注意,在任何数组中使用1都会在python中使用numpy形成类似'+'的形状

问题描述 投票:0回答:2

Header 1#Python中的Numpy三四五维数组

输入1:

3

输出1:

[[0 1 0]

[1 1 1]

[0 1 0]]

输入2:

5

输出1:

[[[0 0 1 0 0]

[0 0 1 0 0]

[1 1 1 1 1 1]

[0 0 1 0 0]

[0 0 1 0 0]]

请注意,数组中的1形成类似+的形状。我的逻辑如下所示

a=np.zeros((n,n),dtype='int')
a[-3,:] = 1
a[:,-3] = 1 print(a)

此逻辑仅适用于五维数组,不适用于三维数组。任何人都请使用np.zeros和整数除法来协助获取3维和5维数组的预期输出//

条件:使用整数除法(//)访问中间的行和列,并使用np.zeros()函数

python arrays numpy
2个回答
0
投票

执行此操作

import numpy as np

def plus(size):
    a = np.zeros([size,size], dtype = int)
    a[int(size/2)] = np.ones(size)
    for i in a:
        i[int(size/2)] = 1
    return a

print(plus(3)) //3 is the size
//Output
[[0 1 0]
 [1 1 1]
 [0 1 0]]

0
投票

如您所见,n//2 = 3n=5。因此,这就是您的问题的解决方案,如下所示:

import numpy as np

def create_plus_matrix(n):
    a = np.zeros((n,n),dtype='int')
    a[-n//2,:] = 1
    a[:,-n//2] = 1
    return a

所以,让我们尝试一下:

>>> create_plus_matrix(3)
[[0 1 0]
 [1 1 1]
 [0 1 0]]

>> create_plus_matrix(5)
[[0 0 1 0 0]
 [0 0 1 0 0]
 [1 1 1 1 1]
 [0 0 1 0 0]
 [0 0 1 0 0]]
© www.soinside.com 2019 - 2024. All rights reserved.