在python中,我试图在函数
中更改np数组的值def function(array):
array = array + 1
array = np.zeros((10, 1))
function(array)
对于数组作为函数参数,它应该是一个引用,我应该能够在函数内修改它的内容。
array = array + 1执行元素操作,为数组中的每个元素添加一个,因此它会更改内部值。
但是在函数调用之后,数组实际上没有改变。我猜这个程序认为我试图改变引用本身,而不是数组的内容,因为元素明智的操作的语法。有没有办法让它做到预期的行为?我不想循环遍历单个元素或使函数返回新数组。
答案 0 :(得分:3)
这一行:
public function journalDetails()
{
return $this->hasOne('App\Journal');
}
public function conferenceDetails()
{
return $this->hasOne('App\Conference');
}
public function editorshipDetails()
{
return $this->hasOne('App\Editorship');
}
...执行元素操作,但它执行的操作是创建一个新数组,每个元素递增。将该数组分配回局部变量array = array + 1
并没有做任何有用的事情,因为该局部变量即将消失,你还没有做任何事情来改变同名的全局变量,
另一方面,这一行:
array
...执行元素化操作,就地增加所有元素,这可能是你想要的。
在Python中,可变集合只有允许,而不是必需,以这种方式处理array += 1
语句;他们可以以与+=
相同的方式处理它(像array = array + 1
这样的不可变类型)。但是str
等内置类型以及list
等最受欢迎的第三方类型都可以满足您的需求。
答案 1 :(得分:1)
如果要更改阵列内容,另一种解决方法是使用:
array[:] = array + 1