我想修改一个numpy数组“in-place”。我有兴趣重新安排阵列(而不是返回:重新排列的数组版本)。重新安排numpy阵列
下面是一个例子代码:
from numpy import *
def modar(arr):
arr=arr[[1,0]] # comment & uncomment this line to get different behaviour
arr[:,:]=0
print "greetings inside modar:"
print arr
def test2():
arr=array([[4,5,6],[1,2,3]])
print "array before modding"
print arr
print
modar(arr)
print
print "array now"
print arr
test2()
AR = ARR分配[[1,0]]打破的 “ARR” 原始数组传递给函数 “modar” 的对应关系。您可以通过评论/取消注释该行来确认这一点..当然,这发生了,因为必须创建一个新的数组。
我该如何告诉python新数组仍然对应于“arr”?
简单地说,我怎样才能让“modar”重新排列“in-place”数组?
确定..我修改由该代码和替换 “modarr”:
def modar(arr):
# arr=arr[[1,0]] # comment & uncomment this line to get different behaviour
# arr[:,:]=0
arr2=arr[[1,0]]
arr=arr2
print "greetings inside modar:"
print arr
例程 “test2的” 仍然得到从 “modar” 未修饰的阵列。
我不明白你的问题。你可以添加一个你期望的函数'modar'的例子吗? – nicoguaro 2014-10-08 12:46:02
“test2”应该从“modar”接收重新排列的数组。 – 2014-10-09 07:41:41
@ElSampsa你尝试了下面的答案吗?你必须这样做:'arr [...] = arr2 [...]''''指示复制数据,否则你会丢失参考 – 2014-10-09 07:48:32