Tay*_*rim 5 python numpy generator
我试图在生成器的帮助下生成一个2d numpy数组:
x = [[f(a) for a in g(b)] for b in c]
Run Code Online (Sandbox Code Playgroud)
如果我尝试做这样的事情:
x = np.array([np.array([f(a) for a in g(b)]) for b in c])
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,我得到了np.array的np.array.但是我不想要这个,但是ndarray,所以我可以用这样的方式得到列:
y = x[:, 1]
Run Code Online (Sandbox Code Playgroud)
所以,我很好奇是否有办法以这种方式生成它.
当然可以创建所需大小的npdarray并用必需的值填充它,但我想在一行代码中这样做.
Mar*_*iet 10
这有效:
a = [[1, 2, 3], [4, 5, 6]]
nd_a = np.array(a)
Run Code Online (Sandbox Code Playgroud)
所以这也应该有效:
nd_a = np.array([[x for x in y] for y in a])
Run Code Online (Sandbox Code Playgroud)
要创建一个新数组,这似乎numpy.zeros是要走的路
import numpy as np
a = np.zeros(shape=(x, y))
Run Code Online (Sandbox Code Playgroud)
您还可以设置数据类型来合理分配它
>>> 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]')
Run Code Online (Sandbox Code Playgroud)
也可以看看
| 归档时间: |
|
| 查看次数: |
19278 次 |
| 最近记录: |