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')
也可以使用。