Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NumPy:有没有更好的方法来构造具有特定值的特定矩阵?_Python_Numpy - Fatal编程技术网

Python NumPy:有没有更好的方法来构造具有特定值的特定矩阵?

Python NumPy:有没有更好的方法来构造具有特定值的特定矩阵?,python,numpy,Python,Numpy,我用这段代码构建了一个矩阵 c_bed = np.append(np.array([1, 2, 3]), np.nan).reshape(4, 1) c_bath = np.array([1, 1, 2, 2], dtype=np.float).reshape(4, 1) ds = np.append(c_bed, c_bath, axis=1) 给 array([[ 1., 1.], [ 2., 1.], [ 3., 2.], [nan, 2

我用这段代码构建了一个矩阵

c_bed = np.append(np.array([1, 2, 3]), np.nan).reshape(4, 1)
c_bath = np.array([1, 1, 2, 2], dtype=np.float).reshape(4, 1)
ds = np.append(c_bed, c_bath, axis=1)

array([[ 1.,  1.],
       [ 2.,  1.],
       [ 3.,  2.],
       [nan,  2.]])

输出正是我想要的,但是我想知道有没有更好的方法来构建这个矩阵?

使用
zip\u longest

from itertools import zip_longest
np.array(list(zip_longest([1,2,3],[1,1,2,2],fillvalue=np.nan)))
Out[228]: 
array([[ 1.,  1.],
       [ 2.,  1.],
       [ 3.,  2.],
       [nan,  2.]])

是否有任何理由不使用此
matrix=numpy.array([[1,1],[2,1],[3,2],[numpy.nan,2]])

如果你有

beds = [1, 2, 3]
baths = [1, 1, 2, 2]
data = (beds, baths)
您可以执行以下操作:

ds = np.full((max(map(len, data)), 2), np.nan)
ds[:len(beds), 0] = beds
ds[:len(baths), 1] = baths

免责声明:以下方法可能是最短的方法,但肯定不是最健康的方法。我不会在生产代码中使用它

np.c_[[2,4,6,np.nan],2:6]//2
# array([[ 1.,  1.],
#        [ 2.,  1.],
#        [ 3.,  2.],
#        [nan,  2.]])

我认为假设原始列表是传入的数据。如果OP证明了这一点,我很乐意更新我的答案。我很乐意就目前的情况进行投票。这是目前问题的最佳答案。设置
fillvalue=np.nan
就可以得到一个数字数组。
np.array(list(zip_最长([1,2,3],[1,1,2,2]),'d')
也可以使用。