2016-05-29 30 views
2

我想使用np.append追加到numpy数组。python numpy数组附加不能在.py文件中工作,但在终端中工作

例如,

a = np.array([1]) 

np.append(a, [2]) 

此代码工作良好终端(结果是阵列([1,2])),但它不会当我执行.py文件包括相同的工作代码包含在其中。当我在追加后打印一个[2]时,它仍然是[1]。

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

import numpy as np 

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

,这是与终端运行它的结果:

python test.py 
[1] 
[1] 

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

回答

2

您确定终端内使用的numpy版本和您的.py文件的执行版本相同吗?据numpy的1.10.0 http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.append.html np.append不到位,因此你从python test.py

获取行为要比较的版本保持一致,你可以打印和比较numpy.__version__

+1

根据[这个问题](http://stackoverflow.com/questions/34597871/numpy-wont-append-arrays)的答案,我发现这是因为我没有使用数组的'复制'。在终端中,使用np.append()直接得到结果,而在.py文件中,在打印a的值之前,np.append()函数似乎将结果扔掉(?)。这是我固定我的代码在test.py,现在它的工作原理: '进口numpy的为NP A = np.array([1]) 打印(一) A = np.append( a,[2]) print(a)' – user3052069

+0

'np.append'是另一种使用'np.concatenate'的方法。它不是,也从来不是一个列表副本的追加。 – hpaulj

1

你误会了终端正在做的事情。当你在终端上写下以下内容:

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

你显然没有要求它打印,但它确实。所以终端必须插入一个打印语句。终端实际上​​是运行:

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

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

当然,你的代码没有插入相同的print语句,所以当然它给一个不同的结果

相关问题