且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何与QUOT;规模"一个numpy的阵列?

更新时间:2022-10-23 20:06:14

您应该使用 Kronecker积, numpy.kron :


  

计算Kronecker积,取得由第一缩放第二阵列块构成的复合阵列


块引用>
 导入numpy的是NP
一个= np.array([1,1],
              [0,1]])
N = 2
np.kron(一,np.ones((N,N)))

这给你想要什么:

 阵列([1,1,1,1]
       [1,1,1,1],
       [0,0,1,1],
       [0,0,1,1]])

I would like to scale an array of shape (h, w) by a factor of n, resulting in an array of shape (h*n, w*n), with the.

Say that I have a 2x2 array:

array([[1, 1],
       [0, 1]])

I would like to scale the array to become 4x4:

array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [0, 0, 1, 1],
       [0, 0, 1, 1]])

That is, the value of each cell in the original array is copied into 4 corresponding cells in the resulting array. Assuming arbitrary array size and scaling factor, what's the most efficient way to do this?

You should use the Kronecker product, numpy.kron:

Computes the Kronecker product, a composite array made of blocks of the second array scaled by the first

import numpy as np
a = np.array([[1, 1],
              [0, 1]])
n = 2
np.kron(a, np.ones((n,n)))

which gives what you want:

array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [0, 0, 1, 1],
       [0, 0, 1, 1]])