你好,我想问问有没有一种方法可以使用自定义值创建一个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]])
答案 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。享受!