我有一个数组,例如:
01
23
我希望你能够“扩展”它,使得生成的数组看起来像这样:
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
2 2 2 3 3 3
2 2 2 3 3 3
2 2 2 3 3 3
我已经尝试使用numpy的tile
和各种重复和轴,但都无法完全达到我的要求。虽然我可以看出如何通过嵌套循环来实现,但我正在寻找一种“Pythonic”的方法来完成这个任务。有人知道吗?顺便说一句,我正在解决的真正问题涉及一个3D数组。
我有一个数组,例如:
01
23
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
2 2 2 3 3 3
2 2 2 3 3 3
2 2 2 3 3 3
我已经尝试使用numpy的tile
和各种重复和轴,但都无法完全达到我的要求。虽然我可以看出如何通过嵌套循环来实现,但我正在寻找一种“Pythonic”的方法来完成这个任务。有人知道吗?顺便说一句,我正在解决的真正问题涉及一个3D数组。
numpy.kron
函数 - 计算两个矩阵的 Kronecker 乘积。第一个矩阵是原始矩阵,而第二个矩阵只需是一个 3 x 3 的 np.ones
数组:In [3]: import numpy as np
In [4]: A = np.array([[0, 1], [2, 3]])
In [5]: B = np.kron(A, np.ones((3, 3), dtype=A.dtype))
In [6]: B
Out[6]:
array([[ 0., 0., 0., 1., 1., 1.],
[ 0., 0., 0., 1., 1., 1.],
[ 0., 0., 0., 1., 1., 1.],
[ 2., 2., 2., 3., 3., 3.],
[ 2., 2., 2., 3., 3., 3.],
[ 2., 2., 2., 3., 3., 3.]])
B
符合创建A
时使用的原始数据类型。我不确定您的原始矩阵类型是什么,因此我已经设置了与原始类型相同的ones
矩阵,以确保B
也符合相同的类型。N x N
重复平铺,请将np.ones
调用中的3
更改为N
。np.ones((3, 3),dtype=A.dtype)
。 - Divakarnumpy.float
。我会修改我的帖子。然而,这个重复问题只有两个答案——其中一个用了 kron
。我对第二个答案并不特别欣赏……尽管时间非常吸引人! - rayryeng