【问题标题】:python numpy array append not working in .py file, but works in terminalpython numpy数组追加在.py文件中不起作用,但在终端中起作用
【发布时间】:2016-09-27 04:42:48
【问题描述】:

我正在尝试使用 np.append 追加到一个 numpy 数组。

例如,

a = np.array([1])

np.append(a, [2])

此代码在终端中运行良好(结果为 array([1, 2])),但当我运行包含其中包含的相同代码的 .py 文件时,它将无法运行。当我在附加 [2] 后打印 a 时,它仍然是 [1]。

这是我的 test.py 文件的代码:

import numpy as np

a = np.array([1])
print(a)
np.append(a, [2])
print(a)

这是用终端运行的结果:

python test.py
[1]
[1]

没有错误的错误结果。 有谁知道可能是什么问题?

【问题讨论】:

    标签: python arrays numpy append


    【解决方案1】:
    import numpy as np
    a = np.array([1])
    print(a)
    a = np.append(a, [2])
    print(a)
    

    numpy.append(arr, values, axis=None),其中arr 是将值附加到此数组的副本 (http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.append.html)。

    在终端中,您的代码可以正常工作,因为 np.append(a,[2]) 变为 print np.append(a,[2])

    【讨论】:

      【解决方案2】:

      您确定终端中使用的 numpy 版本和执行 .py 文件的版本相同吗?根据http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.append.html np.append in numpy 1.10.0 没有到位,因此与您从python test.py 获得的行为一致

      要比较版本,可以打印比较numpy.__version__

      【讨论】:

      • 根据this question 的回答,我发现这是因为我没有使用数组的“副本”。在终端中,使用 np.append() 直接产生结果,而在 .py 文件中,np.append() 函数似乎在打印 a 的值之前丢弃(?)结果。这就是我在 test.py 中修复代码的方式,现在它可以工作了:import numpy as np a = np.array([1]) print(a) a = np.append(a, [2]) print(a)
      • np.append 是使用np.concatenate 的另一种方式。它不是,也从来不是,列表追加的克隆。
      【解决方案3】:

      您误解了终端在做什么。当您在终端中编写以下内容时:

      >>> a = np.array([1])
      >>> np.append(a, [2])
      array([1, 2])
      

      您显然没有要求它打印,但它确实要求。所以终端一定已经插入了打印语句。终端实际上​​正在运行:

      a = np.array([1])
      print repr(np.append(a, [2]))
      

      也就是说,所有不返回None表达式都包裹在print repr(...)

      当然你的代码没有插入相同的打印语句,所以它当然会给出不同的结果

      【讨论】:

        猜你喜欢
        • 2018-07-28
        • 1970-01-01
        • 2022-01-25
        • 2019-09-30
        • 2012-01-09
        • 2017-04-22
        • 1970-01-01
        • 2012-06-30
        • 1970-01-01
        相关资源
        最近更新 更多