繁体   English   中英

使用列表切片 Numpy 数组

[英]Slicing Numpy array using List

考虑 2D Numpy 阵列A和就地 function x like

A = np.arange(9).reshape(3,3)
def x(M):
    M[:,2] = 0

现在,我有一个列表(或 1D numpy 数组) L指向行,我想 select 并在它们上应用 function f

L = [0, 1]
x(A[L, :])

其中 output 将被写入 A。由于我使用了对 A 的索引访问,因此矩阵 A 根本不受影响:

A = array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]])

我真正需要的是对矩阵进行切片,例如

x(A[:2, :])

给我想要的 output

A = array([[0, 1, 0],
           [3, 4, 0],
           [6, 7, 8]])

现在的问题是,如何通过列表L提供 Numpy 数组切片(列表到切片的任何自动转换或 function 中是否有任何构建),因为我无法将列表L轻松转换为切片:2在这种情况下。

请注意,我的问题中既有大矩阵A又有列表L - 这就是为什么我需要就地操作来控制可用的 memory 的原因。

您能否修改 function 以便您可以在其中传递切片L

def func(M,L): 
    M[L,2] = 0

func(A,L)

print(A)

出去:

array([[0, 1, 0],
       [3, 4, 0],
       [6, 7, 8]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM