如何将一维数组重塑为形状 (1,4,5) 的数组?
How to reshape a 1-d array into a an array of shape (1,4,5)?
我有这些载体:
a = [1,2,3,4]
b = [1,2,3,5]
我想把这个放在最后:
A = [ [1,0,0,0,0]
[0,1,0,0,0]
[0,0,1,0,0]
[0,0,0,1,0] ]
B = [ [1,0,0,0,0]
[0,1,0,0,0]
[0,0,1,0,0]
[0,0,0,0,1] ]
我一直这样使用 python 中的 np.reshape:
A = np.reshape(a,(1,4,1))
B = np.reshape(b,(1,4,1))
它只完成了部分工作,因为我得到了以下结果:
A = [[1]
[2]
[3]
[4]]
B = [[1]
[2]
[3]
[5]]
理想情况下我想要这样的东西:
A = np.reshape(a,(1,4,(1,5))
但是在阅读文档时,这是不可能的。
在此先感谢您的帮助
您尝试做的实际上并不是重塑,因为您改变了数据的结构。
用你想要的形状创建一个新数组:
A = np.zeros(myshape)
B = np.zeros(myshape)
然后索引这些数组
n = 0
for i_a, i_b in zip(a, b):
A[n, i_a - 1] = 1
B[n, i_b - 1] = 1
n += 1
赋值中的 i_a/i_b - 1
只是为了使 1 索引成为第 0 个元素。这也仅在 a
和 b
具有相同长度时有效。如果它们的长度不同,则制作这两个循环。
可能有更优雅的解决方案,但这应该可以完成工作:)
或者,numpy 可以一次性为 rows/columns 上的多个索引赋值,例如:
In [1]: import numpy as np
In [2]: b = [1,2,3,5]
...:
...:
In [3]: zero = np.zeros([4,5])
In [4]: brow, bcol = range(len(b)), np.array(b) -1 # logical transform
In [5]: zero[brow, bcol] = 1
In [6]: zero
Out[6]:
array([[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 0., 1.]])
我有这些载体:
a = [1,2,3,4]
b = [1,2,3,5]
我想把这个放在最后:
A = [ [1,0,0,0,0]
[0,1,0,0,0]
[0,0,1,0,0]
[0,0,0,1,0] ]
B = [ [1,0,0,0,0]
[0,1,0,0,0]
[0,0,1,0,0]
[0,0,0,0,1] ]
我一直这样使用 python 中的 np.reshape:
A = np.reshape(a,(1,4,1))
B = np.reshape(b,(1,4,1))
它只完成了部分工作,因为我得到了以下结果:
A = [[1]
[2]
[3]
[4]]
B = [[1]
[2]
[3]
[5]]
理想情况下我想要这样的东西:
A = np.reshape(a,(1,4,(1,5))
但是在阅读文档时,这是不可能的。
在此先感谢您的帮助
您尝试做的实际上并不是重塑,因为您改变了数据的结构。 用你想要的形状创建一个新数组:
A = np.zeros(myshape)
B = np.zeros(myshape)
然后索引这些数组
n = 0
for i_a, i_b in zip(a, b):
A[n, i_a - 1] = 1
B[n, i_b - 1] = 1
n += 1
赋值中的 i_a/i_b - 1
只是为了使 1 索引成为第 0 个元素。这也仅在 a
和 b
具有相同长度时有效。如果它们的长度不同,则制作这两个循环。
可能有更优雅的解决方案,但这应该可以完成工作:)
或者,numpy 可以一次性为 rows/columns 上的多个索引赋值,例如:
In [1]: import numpy as np
In [2]: b = [1,2,3,5]
...:
...:
In [3]: zero = np.zeros([4,5])
In [4]: brow, bcol = range(len(b)), np.array(b) -1 # logical transform
In [5]: zero[brow, bcol] = 1
In [6]: zero
Out[6]:
array([[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 0., 1.]])