如何生成二维 numpy 数组?

How to generate 2d numpy array?

我正在尝试借助生成器生成二维 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]')

另见

  • How do I create an empty array/matrix in NumPy?
  • np.full(size, 0) vs. np.zeros(size) vs. np.empty()

很简单,照着做

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 columns.
print(arr_2d)