切片numpy数组并将切片传递给函数

切片numpy数组并将切片传递给函数,numpy,multidimensional-array,slice,reshape,Numpy,Multidimensional Array,Slice,Reshape,我想要一个函数,可以对2D数组的行或列进行操作。假设数组具有C顺序。该函数用于更改二维数据中的值 在函数内部,无论是用行还是列调用,我都希望有相同的索引语法。行切片是[n,:]和列切片[:,n],因此它们具有不同的形状。在函数内部,这需要不同的索引表达式 有没有一种方法不需要移动或分配内存?我的印象是,使用“重塑”将强制副本使数据保持连续。有没有办法在函数中使用nditer 你的意思是这样的: In [74]: def foo(arr, n): ...: arr += n

我想要一个函数,可以对2D数组的行或列进行操作。假设数组具有C顺序。该函数用于更改二维数据中的值

在函数内部,无论是用行还是列调用,我都希望有相同的索引语法。行切片是[n,:]和列切片[:,n],因此它们具有不同的形状。在函数内部,这需要不同的索引表达式

有没有一种方法不需要移动或分配内存?我的印象是,使用“重塑”将强制副本使数据保持连续。有没有办法在函数中使用nditer

你的意思是这样的:

In [74]: def foo(arr, n):
    ...:     arr += n
    ...:     
In [75]: arr = np.ones((2,3),int)
In [76]: foo(arr[0,:],1)
In [77]: arr
Out[77]: 
array([[2, 2, 2],
       [1, 1, 1]])
In [78]: foo(arr[:,1],[100,200])
In [79]: arr
Out[79]: 
array([[  2, 102,   2],
       [  1, 201,   1]])
在第一种情况下,我将
1
添加到数组的一行,即行切片。在第二种情况下,我将向列添加一个数组(列表)。在这种情况下,
n
必须具有正确的长度

通常我们不担心这些值是否是连续的。大踏步走在任何一条路上都会有人进入