python - 在开始和结束 nD 数组之间生成渐变 (n+1)D 数组变形
问题描述
我正在寻找一个 numpy 解决方案来生成一个新的 (n+1) 维数组(在下面的示例中为 3D“变形”),该数组由初始数组和最终数组(2D以下示例中的“开始”和“结束”)。
我尝试了以下方法:
import numpy as np
start = np.arange(6).reshape(2, 3)
end = np.array([18, 10, 17, 15, 10, 2]).reshape(2, 3)
print(start)
print(end)
给我们一个开始和结束数组:在这种情况下为开始:
[[0 1 2]
[3 4 5]]
最后:
[[18 10 17]
[15 10 2]]
渐变数组可以生成如下:
morph = np.zeros((4, start.shape[0], (start.shape[1]))) # adding 2 arrays in between
for i in np.arange(start.shape[0]): # for each row
for j in np.arange(start.shape[1]): # for each column
morph[:, i, j] = np.linspace(start[i, j], end[i, j], 4)
# calculating array of intermediate values
print(morph)
并为我们提供所需的输出:
[[[ 0. 1. 2.]
[ 3. 4. 5.]]
[[ 6. 4. 7.]
[ 7. 6. 4.]]
[[ 12. 7. 12.]
[ 11. 8. 3.]]
[[ 18. 10. 17.]
[ 15. 10. 2.]]]
有没有更好(更快)的方式使用 numpy 例程来执行此操作而无需 2 个循环?我希望有类似的东西(在开始和结束之间生成一个新的线性间隔数组):
morph = np.linspace(start.all(), end.all(), 4)
但后来我得到:
[ 0. 0.33333333 0.66666667 1. ]
这不是意图,也不是预期的结果。
感谢您的时间!
解决方案
推荐阅读
- javascript - firebase currentUser 在页面重新加载时为空
- c# - SonarQube 错误的错误?使用 Null Coalesce 和字符串赋值
- python - 如何为 celery 任务日志指定文件路径?
- reactjs - 反应笑话快照测试 - 更改目录结构
- vb.net - 如果语句为真,则 End If 不会立即继续
- python - 在 Scrapy 中使用分页访问多个页面
- pandas - Should I use classes for pandas.DataFrame?
- python - 在同一个 .py 文件上与另一个人进行实时协作?
- node.js - 如何使用 mongoose 和 Node.js 请求新创建的模型?
- javascript - 如何在新行上粘贴复制的链接?