Arrays python数组第一和第二元素的紧凑形式
我定义了两个数组:Arrays python数组第一和第二元素的紧凑形式,arrays,python-3.x,numpy,Arrays,Python 3.x,Numpy,我定义了两个数组: a=np.array([[2,3,4],[5,6,7],[8,9,10]]) b=np.array([-1,-2]) 并创建了第三个: x=np.asarray([[x - a/2, x + a/2] for x in b]) 现在,我定义了两个变量 u,v = x[:,0], x[:,1] 我的问题非常简单:有没有一种方法不用逗号,只使用数组操作来定义这些变量?如果我写 u,v = x[:,] 排序错误。如果x是2D: u, v = x.T 如果x是ND: u,
a=np.array([[2,3,4],[5,6,7],[8,9,10]])
b=np.array([-1,-2])
并创建了第三个:
x=np.asarray([[x - a/2, x + a/2] for x in b])
现在,我定义了两个变量
u,v = x[:,0], x[:,1]
我的问题非常简单:有没有一种方法不用逗号,只使用数组操作来定义这些变量?如果我写
u,v = x[:,]
排序错误。如果x是2D:
u, v = x.T
如果x是ND:
u, v = np.swapaxes(x, 0, 1)
确认:
>>> np.all(u == x[:, 0])
True
>>> np.all(v == x[:, 1])
True
您正在寻找的是
u,v=x.T
?可能的副本不是真的。我想要的正是来自u,v=x[:,0],x[:,1]
的u
和v
,但我想知道是否没有办法简洁地写这个。我知道这是可能的u,v=np.hsplit(x,x.shape[1])
或者只是循环的,但奇怪的是:
和没有操作,
这不起作用。如果我在头脑中正确地运行它,x
是(2,2,3,3)形状<代码>u
为(2,3,3),在轴1上选择x[:,]
只是x
。解包只在第一个轴上迭代。你必须交换轴才能在2号解包,也就是说,从2号移到1号。这与我的想法不完全一样,但是swapaxes
起作用了。