python元素明智的操作功能

时间:2018-04-30 00:46:08

标签: python arrays numpy

在python中,我试图在函数

中更改np数组的值
def function(array):
    array = array + 1
array = np.zeros((10, 1))
function(array)

对于数组作为函数参数,它应该是一个引用,我应该能够在函数内修改它的内容。

array = array + 1执行元素操作,为数组中的每个元素添加一个,因此它会更改内部值。

但是在函数调用之后,数组实际上没有改变。我猜这个程序认为我试图改变引用本身,而不是数组的内容,因为元素明智的操作的语法。有没有办法让它做到预期的行为?我不想循环遍历单个元素或使函数返回新数组。

2 个答案:

答案 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