1

我有一个矩阵

1   2   3
4   5   6
7   8   9

我想将第一个元素与同一矩阵的另一个元素组合并创建新矩阵。

x 和 y 是 ndarray 我想在 python 中执行此代码

for i=0 to 3 do
    for j=0 to 3 do
      if  x[0][0]<x[i][j] then 
            t[i][j]=1
      else
           t[i][j]=0

在蟒蛇中:

x=np.array([[1,2,3], [4,5,6], [7,8,9]])
y=[]
for i in range(0, 3):
    for j in range(0, 3):
        if x[0][0]< x[i][j]:
            y.append(1)
        else:
            y.append(0)

输出:

>>> t
[0, 1, 1, 1, 1, 1, 1, 1, 1]

这个说法正确吗?

4

2 回答 2

3

首先,当我完全按照说明运行您的代码时,我得到了 y 的值,而不是您粘贴的值:

[0, 1, 1, 1, 1, 1, 1, 1, 1]

我怀疑你想要做的实际上并不是你在这里写的,但假设是这样,这里有一个更简单的方法来实现相同的结果:

>>> np.where(x > x[0,0], 1, 0).flatten()
array([0, 1, 1, 1, 1, 1, 1, 1, 1])
于 2013-07-31T23:23:41.267 回答
0

我想你想要类似的东西

x=np.array([[1,2,3], [4,5,6], [7,8,9]])
output = []
for i in range(0, 3):
    y=[]
    for j in range(0, 3):
        if x[0][0]< x[i][j]:
            y.append(1)
        else:
            y.append(0)
     output.append(y)
print output

但从你的问题中很难看出

但更好的解决方案是

map(lambda tmp:map(int,tmp),(x+x[0,0])[0,0] < x)

甚至更好地使用带有 numpy 的 jterraces 解决方案

于 2013-07-31T23:22:18.323 回答