有没有一种方法可以使用numpy array创建具有自定义值的数组

时间:2019-06-05 07:28:02

标签: python arrays

你好,我想问问有没有一种方法可以使用自定义值创建一个array而不使用循环并分配值,例如我想创建array with [2,1]形状并且我想填充第一列我的值是(-1),第二个值是(2),我已经阅读了numpy的文档“ https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.array-creation.html”,但没有找到此功能。谢谢您的帮助。


theta = np.array([1, 2])  <-- how to assign diff values per column ?
theta.fill(-1)

我想获得以下结果

   array([[-1, 2],
       [-1, 2]
       [-1, 2]
       [-1, 2]])


5 个答案:

答案 0 :(得分:2)

import numpy as np

theta = np.zeros(shape=(4,2), dtype=int)
theta[:,0] = -1
theta[:,1] = 2

答案 1 :(得分:1)

不使用完整循环的语法,您可以执行以下操作。

对于简单的数组,您可以执行以下操作:

array = [[-1,2] for _ in range(3)]

否则,对于一个numpy数组,(此处的文档here),您可以简单地设置np.array(如下所示):

array = np.array([[-1,2] for _ in range(3)])

答案 2 :(得分:1)

您可以使用索引:

import numpy as np

theta = np.zeros((4,2))
theta[:, [0,1]] = [-1,2]

ellipsis

import numpy as np

theta = np.zeros((4,2))
theta[...] = [-1,2]

两者均导致:

array([[-1.,  2.],
       [-1.,  2.],
       [-1.,  2.],
       [-1.,  2.]])

答案 3 :(得分:1)

另一种方法:

np.array([-1, 2] * 4).reshape(4,2)

答案 4 :(得分:0)

numpy 中有一个内置函数来实现这一点。

在您的情况下,遵循单行代码即可完成工作,而无需使用任何循环甚至列表理解

In [1]: import numpy as np

In [2]: np.full((4,2), fill_value=(-1,2))
Out[2]: 
array([[-1,  2],
       [-1,  2],
       [-1,  2],
       [-1,  2]])

有关详细信息,请参阅 numpy 文档 numpy.full。享受!