python - NumPy:将 1D 数组转换并重塑为 2D 数组,用零?
问题描述
如何将以下列表转换并重塑为带有零的二维数组?
# original list
[1, 0.96, 0.92, 0.88]
# 2D Array
[[1 0 0 0 ]
[0.96 1 0 0 ]
[0.92 0.96 1 0 ]
[0.88 0.92 0.96 1 ]]
解决方案
这是一种时髦的矢量化方式。我们可以利用np.lib.stride_tricks.as_strided
basedscikit-image's view_as_windows
来获得滑动窗口视图并解决它。
from skimage.util.shape import view_as_windows
# a is input array (convert to array with np.array() is input is list)
p = np.r_[a[::-1], np.zeros(len(a)-1, dtype=a.dtype)]
out = view_as_windows(p,len(a))[::-1]
或者,将其保留为 NumPy -
m = len(a)
n = p.strides[0]
out = np.lib.stride_tricks.as_strided(p[m-1:], shape=(m,m), strides=(-n,n))
推荐阅读
- php - 如何对 php 注册页面使用验证?
- c++ - 插入函数指向新数据
- javascript - 从某个位置显示对象标签内容
- mysql - 如何在ubuntu中使用相同的局域网将mysql数据库的访问权限授予另一台计算机?
- c# - 加入内存时,LINQ 查询中的“位置”是否重要?
- powershell - 使用 Powershell 从日常文件夹中复制文件
- node.js - 带有 Google Sheets REST API 和 OAuth2 身份验证的 Firebase 可调用函数 (NOde.js)
- powershell - Powershell error copy-item cannot bind argument to parameter 'path' because it is null
- android - 通过 viewpager 获取图像
- aem - 为什么重新加载后图像未反映在 AEM 6.2 中触摸 UI 对话框的页面属性上?