numpy 仅从使用另一个矩阵PYPY的矩阵中选择非零值

pqwbnv8z  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(115)

我有两个形状为(240,480)的数组mp和长度为N的形状数组(240,480)的数组。我想创建一个长度为N的数组,其值来自mp,但对于POP_FTS_NORM中的每个数组x,只有x的元素!=0。
低效代码:

full_mp = np.array([np.array([mp[i][j] if (x != 0)[i][j] is True else 0 for i in range(240) for j in range(480)]).reshape(240, 480) for x in pop_fts_norm], dtype='float32')
full_mp.shape

这招管用,但见效很慢。怎样才能更有效率地用Python风格写作呢?
谢谢,佩特鲁

bzzcjhmw

bzzcjhmw1#

full_mp = np.array([np.where(x != 0, mp, 0) for x in pop_fts_norm])
full_mp.shape

找到了解决方案。

xxhby3vn

xxhby3vn2#

您可以将数组中的矩阵转换为一组0和1,然后只需将这两个矩阵按元素相乘即可得到结果:

for x in pop_fts_norm:
    x[x!=0] = 1

full_mp = np.array([np.array(np.multiply(mp,x) for x in pop_fts_norm])

相关问题