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)