python - 如何在更大的数组中找到 numpy 数组形状?
问题描述
big_array = np.array((
[0,1,0,0,1,0,0,1],
[0,1,0,0,0,0,0,0],
[0,1,0,0,1,0,0,0],
[0,0,0,0,1,0,0,0],
[1,0,0,0,1,0,0,0]))
print(big_array)
[[0 1 0 0 1 0 0 1]
[0 1 0 0 0 0 0 0]
[0 1 0 0 1 0 0 0]
[0 0 0 0 1 0 0 0]
[1 0 0 0 1 0 0 0]]
有没有办法遍历这个 numpy 数组,并且对于每个 2x2 的 0 簇,设置该簇中的所有值 = 5?这就是输出的样子。
[[0 1 5 5 1 5 5 1]
[0 1 5 5 0 5 5 0]
[0 1 5 5 1 5 5 0]
[0 0 5 5 1 5 5 0]
[1 0 5 5 1 5 5 0]]
我的想法是使用高级索引将 2x2 形状 = 设置为 5,但我认为简单地迭代会很慢:1)检查 array[x][y] 是否为 0 2)检查相邻的数组元素是否0 3) 如果所有元素都是 0,则将所有这些值设置为 5。
解决方案
big_array = [1, 7, 0, 0, 3]
i = 0
p = 0
while i <= len(big_array) - 1 and p <= len(big_array) - 2:
if big_array[i] == big_array[p + 1]:
big_array[i] = 5
big_array[p + 1] = 5
print(big_array)
i = i + 1
p = p + 1
输出:[1, 7, 5, 5, 3]
这是一个示例,而不是完整的正确代码。
推荐阅读
- sql - 如何通过 Visual Studio/SSDT 将外部表添加到 Azure SQL DB
- react-native - 不能使用来自另一个模块或领域的 t"_Schema"。确保 node_modules 中只有一个“graphql”实例
- daml - 如何在场景中断言合同处于非活动状态(存档)?
- javascript - 为什么等待延迟在函数范围结束时结束
- python - 在 miniconda 环境中使用 conda 和 pip 发生冲突
- excel - 遍历命名范围的所有值
- node.js - 如何在节点中同步redis get/set
- ios - 'registerExtension()' 已重命名为 'register()'
- perl - 在 Perl 中 Math::BigInt 与标量的比较
- android - 如何在我的 Android 应用程序中加载 OpenCV 管理器包?