假设我有一个n × m
数组,即:
array([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]])
然后我要生成一个3D数组k × n × m
,其中新轴上的所有数组都相等,即:相同的数组,但是now 3 × 3 × 3
。
array([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]],
[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]],
[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]]])
我怎么才能得到它?
从开始引入一个新轴,并与一起None/np.newaxis
复制np.repeat
。这应该适用于将任何n
暗淡数组扩展为n+1
暗淡数组。实施将是-
np.repeat(arr[None,...],k,axis=0)
样品运行-
In [143]: arr
Out[143]:
array([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]])
In [144]: np.repeat(arr[None,...],3,axis=0)
Out[144]:
array([[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]],
[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]],
[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]]])
View-output
提高记忆效率
我们还可以使用生成3D
视图并实现几乎免费的运行时np.broadcast_to
。更多信息-
here
。因此,只需-
np.broadcast_to(arr,(3,)+arr.shape) # repeat 3 times
问题内容: 我想分别沿轴0和轴1重复数组元素M和N次: 这行得通,但是我想知道有没有更好的方法而无需创建临时数组。 问题答案: 您可以使用kronecker产品,请参阅: 不过,您原来的方法也可以!
问题内容: 假设我有三个任意的一维数组,例如: 这三个数组代表3D网格中的采样间隔,我想为所有相交构造一个三维矢量的一维数组,例如 订单实际上对此并不重要。生成它们的明显方法是: 所以问题是…有没有更快的方法?我看过但没有找到(可能只是找不到正确的Google关键字)。 我目前正在使用此: 但是我感觉好像错过了一些聪明的幻想的Numpy方式吗? 问题答案: 要在上述示例中使用numpy网格,将可以
本文向大家介绍JAVA复制数组和重置数组大小操作,包括了JAVA复制数组和重置数组大小操作的使用技巧和注意事项,需要的朋友参考一下 翻看印象笔记发现自己整理过arraycopy()这样一个方法,码字放到这里: System.arraycopy()是一个静态方法,用来实现重置数组操作 数组复制方法调用和参数列表: System.arraycopy(src, srcPos, dest, destPos
问题内容: 我有一个二维数组,称为int类型的矩阵,我想用一种方法将其复制到局部变量,以便我可以对其进行编辑 什么是复制阵列的最佳方法,我遇到了一些麻烦 例如 问题答案: 有两种复制数组的好方法是使用clone和。 这是在2D情况下如何使用克隆的方法: 对于System.arraycopy(),你可以使用: 我没有基准,但是我可以用我的2美分打赌,它们比你自己做的更快,更不容易出错。特别是,它是用
我有一个现有的数组,如下所示 然后我想创建一个新的数组,如下所示 我已经通过方法尝试过了 但是它没有给出一个正确的数组,请帮助我解决这个问题