簡體   English   中英

如何從1-D陣列創建2-D numpy數組?

[英]How to create a 2-D numpy array from 1-D array?

我有一個numpy數組:

import numpy as np
A = np.array([1,2])

例如,我想在2-D numpy數組中制作兩個元素的n -copies

B=[[1,1,1,1],[2,2,2,2]] # 4 copies of each element of A into a separate array

我該怎么做?

使用np.repeat然后重塑 -

np.repeat(A,4).reshape(-1,4)

reshape(-1,4)基本上保留4個列, -1指定它根據要重新整形的數組的總大小計算行數。 因此,對於給定的樣本,因為np.repeat(A,4).size8 ,所以它指定8/4 = 2作為行數。 因此,它將np.repeat(A,4)重新整形為形狀(2,4)2D數組。

或者使用np.repeat延伸后A2DNone/np.newaxis -

np.repeat(A[:,None],4,axis=1)

或者在擴展版本上使用np.tile -

np.tile(A[:,None],4)

您可以將它與另一個包含1 s的數組相乘:

>>> import numpy as np
>>> A=np.array([1,2])
>>> A[:, np.newaxis] * np.ones(4, int)
array([[1, 1, 1, 1],
       [2, 2, 2, 2]])

或者如果您只需要只讀副本就可以使用broadcast_to (非常非常快速的操作):

>>> np.broadcast_to(A[:, None], [A.shape[0], 4])
array([[1, 1, 1, 1],
       [2, 2, 2, 2]])

您可以使用矩陣乘法和(正確形狀)1s數組,然后轉置最終數組。

import numpy as np

A = np.array([1, 2])

n = 4
B = np.ones((n, 1))
out = (A*B).T

您也可以使用np.vstack然后轉置數組。

out = np.vstack((A,)*n).T

暫無
暫無

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

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