Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Numpy_Matrix - Fatal编程技术网

Python 使用numpy将矩阵元素替换为其他矩阵元素

Python 使用numpy将矩阵元素替换为其他矩阵元素,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,我试图用x的元素替换zero\u矩阵的所有元素,但不确定要使用哪个确切的numpy函数 附言:我不想使用python循环 我的for循环方法: 假设示例数据中的每一行长度不等,可以使用创建一个填充有零的方形数组。请注意,需要对阵列进行转置,以使其恢复到预期的形状。然后将结果分配到zero\u矩阵中的等效位置 from itertools import zip_longest a = np.array(list(zip_longest(*x, fillvalue=0))).T rows, col

我试图用
x
的元素替换
zero\u矩阵的所有元素,但不确定要使用哪个确切的numpy函数

附言:我不想使用python循环

我的for循环方法:


假设示例数据中的每一行长度不等,可以使用创建一个填充有零的方形数组。请注意,需要对阵列进行转置,以使其恢复到预期的形状。然后将结果分配到
zero\u矩阵
中的等效位置

from itertools import zip_longest

a = np.array(list(zip_longest(*x, fillvalue=0))).T
rows, cols = a.shape
zero_matrix[:rows, :cols] = a

>>> zero_matrix
array([[ 3822,   510,     4,     1, 20672,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0],
       [ 3822,   510,     4,     1, 20672,  3822,   510,     4,     1,
        20672,     0,     0,     0,     0,     0],
       [ 3822,  3822,   510,     4,     1, 20672,     0,     0,     0,
            0,     0,     0,     0,     0,     0],
       [ 3822,   510,   510,     4,     1, 20672,     0,     0,     0,
            0,     0,     0,     0,     0,     0],
       [ 3822,   510,     4,     1, 20672,     4,     1, 20672,     0,
            0,     0,     0,     0,     0,     0]], dtype=int32)

循环方法是否正确工作?我试图用x元素替换零矩阵的所有元素,替换方式,根据什么?@AMC:是的,for循环方法有效。你可以复制粘贴,看看它。好的,这是一个很好的解决方案,因为矩阵x的行大小小于0行。例如,假设x有一行包含18个元素。在这种情况下,它将抛出如下错误:
ValueError:无法将输入数组从形状(1,18)广播到形状(1,15)
。如果不需要,您可以始终添加
rows=min(rows,zero\u matrix.shape[0])
for i in range(len(x)):
    zero_matrix[i][:len(x[i])] = x[i]

[[ 3822   510     4     1 20672     0     0     0     0     0     0     0
      0     0     0]
 [ 3822   510     4     1 20672  3822   510     4     1 20672     0     0
      0     0     0]
 [ 3822  3822   510     4     1 20672     0     0     0     0     0     0
      0     0     0]
 [ 3822   510   510     4     1 20672     0     0     0     0     0     0
      0     0     0]
 [ 3822   510     4     1 20672     4     1 20672     0     0     0     0
      0     0     0]]
from itertools import zip_longest

a = np.array(list(zip_longest(*x, fillvalue=0))).T
rows, cols = a.shape
zero_matrix[:rows, :cols] = a

>>> zero_matrix
array([[ 3822,   510,     4,     1, 20672,     0,     0,     0,     0,
            0,     0,     0,     0,     0,     0],
       [ 3822,   510,     4,     1, 20672,  3822,   510,     4,     1,
        20672,     0,     0,     0,     0,     0],
       [ 3822,  3822,   510,     4,     1, 20672,     0,     0,     0,
            0,     0,     0,     0,     0,     0],
       [ 3822,   510,   510,     4,     1, 20672,     0,     0,     0,
            0,     0,     0,     0,     0,     0],
       [ 3822,   510,     4,     1, 20672,     4,     1, 20672,     0,
            0,     0,     0,     0,     0,     0]], dtype=int32)