簡體   English   中英

如何使所有的numpy數組具有相同的形狀?

[英]How to make a list of numpy arrays all have the same shape?

因此,我在列表中有一堆2d Numpy數組,我想確保它們都具有相同的形狀。 我知道第二維對於每個數組都是相同的,但是第一維會有所不同。

假設數組X的形狀為(n,m),數組Y的形狀為(n + 2,m)。 我想將兩行零添加到數組X,以便X和Y均為(n + 2,m)。

確保列表中所有數組具有相同形狀的最Python-ic方法是什么? 假設我知道列表中所有數組的第一個維度的最大值是多少(稱為N),並且正如我提到的,我知道所有數組的第二個維度是m。

謝謝大家!

在一行中:

[np.r_[a, np.zeros((N - a.shape[0], m), dtype=a.dtype)] for a in your_arrays]

可能更具可讀性

for i,a in enumerate(your_arrays):
  rows, cols = a.shape
  if rows != N:
    your_arrays[i] = np.vstack([a, np.zeros((N - rows, cols), dtype=a.dtype)])

相對最近,引入了numpy.pad ,因此還有:

>>> X = np.ones((3,2))
>>> Y = np.ones((5,2))*2
>>> N = 5
>>> nX, nY = [np.pad(m, ((0,N-m.shape[0]),(0,0)), 'constant') for m in [X, Y]]
>>> nX
array([[ 1.,  1.],
       [ 1.,  1.],
       [ 1.,  1.],
       [ 0.,  0.],
       [ 0.,  0.]])
>>> nY
array([[ 2.,  2.],
       [ 2.,  2.],
       [ 2.,  2.],
       [ 2.,  2.],
       [ 2.,  2.]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM