如何使用numpy.append函数

22

我在使用numpy.append函数时遇到了问题。我写了下面这个函数,作为一个代码的一部分,但是我的错误在下面得到了复制:

data = [
         [
          '3.5', '3', '0', '0', '15', '6', 
          '441', 'some text', 'some more complicated data'
         ], 
         [
          '4.5', '5', '1', '10', '165', '0', 
          '1', 'some other text', 'some even more complicated data'
         ]
       ]

def GetNumpyArrey(self, index):
    r = np.array([])
    for line in data:
        np.append(r, float(line[index]))

    print r

如果 index 小于 6,则结果为:

>> []

我做错了什么?

非常感谢!


2
https://dev59.com/EW445IYBdhLWcg3wDWAP - avasal
1
正如@BrenBarn所指出的那样,在这里没有理由使用numpy.append。最有效的方法是最初将r分配给len(data)。如果您事先不知道长度(例如从文件中读取),那么@BrenBarn的建议是创建一个列表并转换为数组是最好的。 - DaveP
1个回答

40
与列表的append方法不同,numpy的append方法不会就地添加元素。它返回一个新数组,其中包含附加的额外元素。因此,您需要执行 r = np.append(r, float(line[index]))
以这种方式构建numpy数组效率低下。最好只需将列表作为Python列表构建,然后在最后创建numpy数组。

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