[英]Unzip a NumPy array
我正在尝试分别打印通过应用两个拉链中的函数获得的变量的列。 如下请见:
x5 = list(zip(x3,x4))
x6 = np.array(x5)
print(x6)
应用功能:
n = 1
br = myfunction(x3,x4,n)
print('this is the result ... ', br)
请注意,如建议的那样,生成myfunction输出类型的数据的可重现方法是:
br = numpy.random.rand((5, 2))
输出看起来像这样:
finally result ... [[[5.37692693e+03 3.78425697e-
03]
[1.36092539e+03 3.35722632e-03]
[5.43477586e+03 3.90104194e-03]
...
[5.93759455e+03 4.05490440e-03]
[3.00855802e+03 3.65746871e-03]
[4.69875286e+03 3.93713784e-03]]]
我尝试了许多方法,例如:首先:
x10,x11 = zip(*br)
print(x10,x11) /print(np.array(x10),np.array(x11))
未能给出错误信息(期望太多的值来解压两个)
第二:
def column(matrix,i):
return [row[i] for row in matrix]
x10 = column(br,0)
x11 = column(br,1)
print(x10,x11)
其输出为:
[array([5.37692693e+03, 3.78425697e-03])]
[array([1.36092539e+03, 3.35722632e-03])]
第三:
x11 = [i[0] for i in br]
x12 = [i[1] for i in br]
print(x11.split(),x12.split())
我认为这不起作用,因为我的函数的输出类型为[[[..]]]
非常感谢
您只能解压缩数组的第一个维,但是要解压缩的维是第二个维。 这意味着您可以执行以下操作:
x10, x11 = br.T
请注意, x10
和x11
将成为br
的视图 ! 这意味着,如果您更改任何这些数组中的任何值,那么您也将更改其他变量。
如果您的数组具有2D以上的尺寸(额外[
和]
),请使用
br.shape
如果您看到多余的空尺寸( 1
),请使用
br = br.squeeze()
另一个可能的解决方案是
br = [[[5.37692693e+03, 3.78425697e-03], [1.36092539e+03, 3.35722632e-03], [5.43477586e+03, 3.90104194e-03], [5.93759455e+03, 4.05490440e-03], [3.00855802e+03, 3.65746871e-03], [4.69875286e+03, 3.93713784e-03]]]
x10,x11 = zip(*br[0])
print(x10,x11)
产量
(5376.92693, 1360.92539, 5434.77586, 5937.59455, 3008.55802, 4698.75286) (0.00378425697, 0.00335722632, 0.00390104194, 0.0040549044, 0.00365746871, 0.00393713784)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.