【问题标题】:What is the best way in NumPy to convert a A x B matrix into a A x B x K matrix? [duplicate]NumPy 中将 A x B 矩阵转换为 A x B x K 矩阵的最佳方法是什么? [复制]
【发布时间】:2021-07-25 18:55:11
【问题描述】:

假设 alpha 是一个大小为 (3,2) 的随机矩阵。

在 Python 中将 alpha 重塑为形状为 (3,2,k) 的新矩阵 beta 的最佳方法是什么? ,2,i] == [α] ?

a = np.random.random((3,2))
k = np.random.randint(1000)
b = np_funct(a, k) # <- function I am looking for
assert b.shape == (3,2,k)    
condition = all([b[:,:,i] == a for i in range(k))
assert condition

【问题讨论】:

  • 你试过 np.tile 或 np.dstack 吗?

标签: python numpy


【解决方案1】:

您可以简单地创建一个包含许多 a 引用的列表并将它们堆叠起来。

np.stack([a] * k, axis=2)

您可以类似地从a 的引用列表中创建一个数组,该矩阵将具有(k, 3, 2) 的形状,然后您使用转置对轴重新排序

np.array([a] * 100).transpose((1,2,0))

如果您不想为每个索引创建一个单独的副本,您可以做的是使用跨步技巧,以便a 的所有副本都引用相同的内存位置。如果不必修改结果,那就太好了。如果您的数组很大(最终会节省内存),则特别有利。

np.lib.stride_tricks.as_strided(a, a.shape + (k,), a.strides + (0,))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2014-05-31
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多