numpy数组中每个元素的简单操作

3

我是一个numpy的新手,但我认为你不应该迭代numpy数组,因为这违背了numpy的目的。

我试图在numpy数组上执行逐元素操作,但显然我不理解语法:

代码:

for line in fidNNC:
    temp = line.strip().split()
    temp.insert(0,0)
    CC.append(temp[0:7])

fidNNC.close()
NNC = np.array(CC)
del(CC)

inds = np.arange(len(NNC))[ NNC[:,4]-1 == NNC[:,1] ]
NNCX = NNC[inds,:]
inds = np.arange(len(NNC))[ NNC[:,5]-1 == NNC[:,2] ]
NNCY = NNC[inds,:]

文件 fidNNC 包含了约一百万行和十列整数。

错误信息:

    inds = np.arange(len(NNC))[ NNC[:,4]-1 == NNC[:,1] ]
TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'int'

如何在不迭代的情况下从NNC[:,4]NNC[:,5]中的每个元素中减去1?

提前感谢,

Daniel


啊,我应该仔细阅读那个问题/答案,它看起来很类似于我的问题。NNC.dtype = |S3 - dansolhe
看了你的代码后,我猜到了 :) 我删掉了评论并添加了一个答案。 - Lev Levitsky
2个回答

1

在读取文件时,您没有将其转换为int,因此创建的数组具有字符串类型。将其转换为int即可解决问题:

for line in fidNNC:
    temp = [int(i) for i in line.strip().split()]
    temp.insert(0,0)
    CC.append(temp[0:7])

0

您可以按列拆分矩阵,并对所需的列执行操作,然后重新创建矩阵。np.c_ 可以实现这一点。例如,我们可以从矩阵 x 的第一列中减去 1(并将结果放入 z 中)。

z = np.c_[ (x[:,1] - 1), x[:,1:] ]

这将从x中提取第一列,对该列进行逐元素减法,并将其余未更改的列连接起来。要对两列进行操作,只需进一步拆分即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接