我有两个数组(3x3),我想以这两个数组访问元素
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
y = [[11, 12, 13], [14, 15, 16], [17, 18, 19]]
z = stack((x, y))
现在我想要让我得到的子数组
z1 = [1, 11]
z2 = [2, 12]
z3 = [3, 13]
z4 = [4, 14]
...
我尝试了z[:, 0]
,但没有按照我的意愿给[1, 11]
。我可以编写一个for
循环并在z[:, i][:, j]
上进行迭代,但是我的实际数组大小是6k x 6k,所以它会很慢。有什么办法可以解决?谢谢。
答案 0 :(得分:0)
z[:, 0, 0]
>>> array([ 1, 11])
您错过了最后一个索引,因为您的堆栈现在是3维的。
现在,如果要分别访问每个元素,则需要为z[:, i, j]
循环3次。
如果您通常只想拥有一个二维的数组,则必须先将其展平:
x_ = np.array(x).reshape(-1, 1)
y_ = np.array(y).reshape(-1, 1)
z = np.hstack((x_, y_))
z[0]
>>> array([ 1, 11])
答案 1 :(得分:0)
尝试一下:
x=[[1,2,3],[4,5,6],[7,8,9]]
y=[[11, 12, 13], [14, 15, 16], [17, 18, 19]]
for i in zip(x,y):
for j in zip(i[0], i[1]):
print(list(j))
输出:
[1, 11]
[2, 12]
[3, 13]
[4, 14]
[5, 15]
[6, 16]
[7, 17]
[8, 18]
[9, 19]