Que:给定大小为3 x 3的矩阵垫。找到末尾累积总和大于或等于150的每一行中的所有偶数。
[[ 51 21 14]
[ 56 85 22]
[ 99 666 230]]
回答:[56 22 666 230]
import numpy as np
mat = np.array([[51,21,14],
[56,85,22],
[99,666,230]]).reshape(3,3)
mat = np.array([[51,21,14],[56,85,22],[99,666,230]]).reshape(3,3)
dim = np.arange(0,mat.ndim+1)
a = np.array([])
for ele in mat:
if np.sum(ele)>=150:
for c in ele:
if c%2==0:
np.insert(a,0,[c])
print(a)
问题:我正在获取空数组。现在我也尝试了append,concatenate。我相信插入元素时代码中根本存在错误。 有人可以帮忙分享一个链接/概念,以解释专门针对numpy数组的insert,concatenate和append之间的区别。
TIA。
答案 0 :(得分:2)
迭代不是解决此问题的最佳方法。使用vectorize
可以轻松numpy
进行所有这些操作:
m = mat.sum(1) >= 150
t = mat[m]
t[t % 2 == 0]
array([ 56, 22, 666, 230])
说明
创建总和超过150的行掩码
>>> m = mat.sum(1) >= 150
>>> m
array([False, True, True])
使用布尔掩码对数组进行索引
>>> t = mat[m]
>>> t
array([[ 56, 85, 22],
[ 99, 666, 230]])
最后,找到偶数元素
>>> t[t % 2 == 0]
array([ 56, 22, 666, 230])