我有一个矩阵3x3,数组有3个值,我希望将数组的每个值添加到矩阵的每一列中,因此,例如,如果我有矩阵,比如:
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]数组[1, 2, 3],我想得到这样的结果
[[2, 3, 4],
[6, 7, 8],
[10, 11, 12]]但是现在,当我试图将数组添加到矩阵中时,它会按列添加它,所以我得到了以下内容:
[[2, 4, 6],
[5, 7, 9],
[8, 10, 12]]而我不能改变轴加运算或找方法来做这样的计算。也许我需要在几步之内完成?还是我漏掉了什么?
发布于 2020-08-09 21:34:46
一个优雅的解决方案是
A
>>> [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]B
>>> [1, 2, 3]ans = A + B[:, None]
ans
>>> [[ 2, 3, 4],
[ 6, 7, 8],
[10, 11, 12]]发布于 2020-08-10 05:45:50
您可以使用numpy.newaxis操作符,如Code 1(在格栅书-Jake的Python数据科学手册中解释)中所示,以实现所需的结果:
代码1:
import numpy as np
A = np.array(
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
)
x = np.array([1, 2, 3])
A + x[np.newaxis:]输出:
Out:
array([[ 2, 4, 6],
[ 5, 7, 9],
[ 8, 10, 12]])如果您正在处理大型数据集中的数字数据,那么它也将是在速度和内存消耗方面完成此任务的最有效方法,因为由于numpy的类型意识,numpy比python.list对象高效得多。
干杯。
发布于 2020-08-09 19:26:27
这样做的方法之一是以下几点。
array1 = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
array2 = [1, 2, 3]
for i in range(0, len(array2)):
for j in range(0, len(array1[i-1])):
array1[i][j] += array2[i]
print(array1)https://stackoverflow.com/questions/63330330
复制相似问题