簡體   English   中英

如何生成二維 numpy 數組?

[英]How to generate 2d numpy array?

我試圖在生成器的幫助下生成一個 2d numpy 數組:

x = [[f(a) for a in g(b)] for b in c]

如果我嘗試做這樣的事情:

x = np.array([np.array([f(a) for a in g(b)]) for b in c])

正如預期的那樣,我得到了一個 np.array 的 np.array。 但我想要的不是這個,而是 ndarray,所以我可以像這樣獲得列:

y = x[:, 1]

所以,我很好奇是否有辦法以這種方式生成它。

當然,可以創建所需大小的 npdarray 並用所需的值填充它,但我想要一種在一行代碼中這樣做的方法。

這有效:

a = [[1, 2, 3], [4, 5, 6]]
nd_a = np.array(a)

所以這也應該有效:

nd_a = np.array([[x for x in y] for y in a])

要創建一個新數組,似乎numpy.zeros是要走的路

import numpy as np
a = np.zeros(shape=(x, y))

您還可以設置數據類型以合理分配它

>>> np.zeros(shape=(5,2), dtype=np.uint8)
array([[0, 0],
       [0, 0],
       [0, 0],
       [0, 0],
       [0, 0]], dtype=uint8)
>>> np.zeros(shape=(5,2), dtype="datetime64[ns]")
array([['1970-01-01T00:00:00.000000000', '1970-01-01T00:00:00.000000000'],
       ['1970-01-01T00:00:00.000000000', '1970-01-01T00:00:00.000000000'],
       ['1970-01-01T00:00:00.000000000', '1970-01-01T00:00:00.000000000'],
       ['1970-01-01T00:00:00.000000000', '1970-01-01T00:00:00.000000000'],
       ['1970-01-01T00:00:00.000000000', '1970-01-01T00:00:00.000000000']],
      dtype='datetime64[ns]')

也可以看看

很簡單,這樣做

import numpy as np

arr=np.arange(50)
arr_2d=arr.reshape(10,5)    #Reshapes 1d array in to 2d, containing 10 rows and 5 coloumns.
print(arr_2d)

暫無
暫無

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

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