关于仅在矩阵中打印某些值的问题

时间:2019-04-25 17:25:05

标签: python

我有此代码:

import numpy as np
X = np.array([[-3, 0, -4], [2, -4, 2], [-2, -2, -2]])
print(X)

生成

[[ -3  0  -4]
 [ 2  -4  2]
 [-2 -2 -2]]

现在,使用上面的矩阵,我只想打印该矩阵/数组中所有为正的元素。

我尝试过

for i in X:
    if i>0
        print(i)

但这会产生语法错误。

3 个答案:

答案 0 :(得分:0)

看起来您的数组有两个维度。尝试这样的事情:

for row in X:
        for column in row:
                if (column > 0): print(column)

(另外,您的语法错误是因为if语句后缺少冒号)

答案 1 :(得分:0)

尝试一下:

for i in np.nditer(X):
    if i>0:
        print(i)

您有一个错误,因为在if语句之后缺少分号,并且因为i变量是矩阵的一行而不是元素。

here所述,nditer返回一个有效的多维迭代器对象,以迭代数组的元素。

迭代简单条件的另一种方法是:

for i in X[X>0]:
    print(i)

答案 2 :(得分:0)

我将按照以下方式进行操作:

import numpy as np
X = np.array([[-3, 0, -4], [2, -4, 2], [-2, -2, -2]])
print(*[i for i in X.ravel() if i>0],sep='\n')

输出:

2
2

numpy.ravel返回展平的(1D)数组,您也可以将其用于比2数组高维的数组。