在NumPy中更改数组边缘的值
16lz
2021-01-22
I am to create an array using only NumPy tools. There it is:
我只使用NumPy工具创建一个数组。它是:
[[2 2 2 2 2]
[2 1 1 1 2]
[2 1 1 1 2]
[2 1 1 1 2]
[2 2 2 2 2]]
That is my code:
那是我的代码:
import numpy as np
x = np.ones((5, 5), dtype = int)
x[0, :] = 2
x[4, :] = 2
x[:, 0] = 2
x[:, 4] = 2
print(x)
I wonder if it is possible to create an array like this in an easier (shorter) way?
我想知道是否有可能以更简单(更短)的方式创建这样的数组?
3 个解决方案
#1
4
Approach #1
方法#1
Initialize with 2s
(edge values) and assign 1s
in middle portion -
用2s(边缘值)初始化并在中间部分分配1s -
x = 2*np.ones((5, 5), dtype = int)
x[1:-1,1:-1] = 1
Approach #2
方法#2
Another short way -
另一个简短方法 -
x = np.ones((5, 5), dtype = int)
x[:,[0,-1]] = x[[0,-1]] = 2
Approach #3
方法#3
One-liner with 2D
convolution -
带2D卷积的单线程 -
In [302]: from scipy.signal import convolve2d
In [303]: (convolve2d(np.ones((5,5)), np.ones((3,3)),'same')<9)+1
Out[303]:
array([[2, 2, 2, 2, 2],
[2, 1, 1, 1, 2],
[2, 1, 1, 1, 2],
[2, 1, 1, 1, 2],
[2, 2, 2, 2, 2]])
更多相关文章
- python笔记7:接口实现方法
- 【Python】Python3 字典 copy()方法
- jieba(结巴)Python分词器加载到Eclipse方法
- python,os模块的常用方法
- Python语言的特点、程序设计基本方法
- Pandas 文本数据方法 findall( )
- 将muilti维Json数组解析为Python
- python中函数参数传递的几种方法
- TensorFlow数据集(一)——数据集的基本使用方法