[英]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.