【发布时间】:2015-06-18 14:47:06
【问题描述】:
我有一个大的 numpy 数组(通常为 500,000x1024,但可以更大),我正在尝试执行几个过程,这些过程取决于数组中正值的位置。 一个非常小的示例数组可能是
[[ 0., 0., 0., 0., 0.,-1.,-1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 1., 0., 0., 1., 5., 0., 0.],
[ 0., 1., 1., 0., 0., 0., 1., 0., 0.],
[ 0., 3., 1., 0., 0., 2., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0., 1., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]]
第一个是替换每行中相距小于三列的正值之间的任何零。所以如果我用 50 替换这些数字,我的示例输出将是
[[ 0., 0., 0., 0., 0.,-1.,-1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 1.,50.,50., 1., 5., 0., 0.],
[ 0., 1., 1., 0., 0., 0., 1., 0., 0.],
[ 0., 3., 1.,50.,50., 2., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0., 1., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0.]]
我需要做的第二件事是根据正值的范围为每一行写出一些信息。例如,使用我更改的数组,我需要能够为第三行写出一条语句,为 col[1:7] 声明正整数,为第四行写两条语句,在 col[1:3] 和 col 中声明正整数[6]。
我已经设法利用 numpy 向量化方法来解决第一个任务,但最终还是求助于循环遍历列和行(尽管在整个数组的子集上)。否则,我最终会替换给定行中的所有零,而不仅仅是正值之间的零。
但第二个任务我似乎找不到不使用循环遍历整个数组的方法
for col in arr:
for row in arr:
我想我的总体问题是,有没有办法利用 numpy 中的矢量化方法来定义每行不同的列索引范围并取决于以下列中的值?
任何帮助将不胜感激。
【问题讨论】:
标签: python arrays numpy multidimensional-array