如何在numpy中从矩阵列表创建Tensor?

50few1ms  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(139)
A = np.random.rand(3,2)
B = np.random.rand(3,2)
C = np.random.rand(3,2)

我如何创建一个TensorT,它是3x2x3;例如,T [:,:,0]= A,T [:,:,1]= B,T [:,:,2]= C?另外,我可能不知道在运行时之前可能给出的矩阵的数量,所以我不能事先显式地创建一个空Tensor并填充它。
我试过了,

T = np.array([A,B,C])

但这样就得到了一个数组,其中T [0,:,:]= A,T [1,:,:]= B,T [2,:,:]= C。这不是我想要的。

idfiyjo8

idfiyjo81#

这就是你要找的吗?我用randint代替rand,以便在打印输出中更容易看到数组是按照你想要的方式排列的。

import numpy as np

A = np.random.randint(0, 20, size=(3, 2))
B = np.random.randint(0, 20, size=(3, 2))
C = np.random.randint(0, 20, size=(3, 2))

T = np.dstack([A, B, C])

print(f'A: \n{A}', end='\n')
print(f'\nT[:,:,0]: \n{T[:,:,0]}\n')

print(f'B: \n{B}', end='\n')
print(f'\nT[:,:,1]: \n{T[:,:,1]}\n')

print(f'C: \n{C}', end='\n')
print(f'\nT[:,:,2]: \n{T[:,:,2]}\n')

结果:

A: 
[[19  9]
 [ 3 19]
 [ 8  6]]

T[:,:,0]:
[[19  9]
 [ 3 19]
 [ 8  6]]

B:
[[16 18]
 [ 8  3]
 [13 18]]

T[:,:,1]:
[[16 18]
 [ 8  3]
 [13 18]]

C:
[[12  9]
 [14 17]
 [16 13]]

T[:,:,2]:
[[12  9]
 [14 17]
 [16 13]]

相关问题