以特定方式添加 numpy 数组
Adding numpy arrays in specific way
我有三个 numpy 数组。
import numpy as np
a=np.array((1,2,3,4))
b=np.array((2,3,4,5))
c=np.array((3,4,5,6))
并且我想以这种方式添加这些数组
a : [1 2 3 4]
+ b : [2 3 4 5]
+ c : [ 3 4 5 6]
= [1 4 9 12 10 6]
有什么简单的方法吗?
一种直观的方法(虽然效率低下)是创建一个零的中间数组,然后用 a
、b
、c
中的值填充每一行。 .. 适当的列移位。一旦你有了这个数组,你就可以对行求和以获得你想要的结果:
import numpy as np
a = np.array((1,2,3,4))
b = np.array((2,3,4,5))
c = np.array((3,4,5,6))
arr_list = [a, b, c]
nr = len(arr_list)
row_lengths = [len(aa) for aa in arr_list]
nc = np.max(row_lengths) + nr - 1
digits = np.zeros((nr, nc), a.dtype)
for ii, aa in enumerate(arr_list):
digits[ii, ii:(ii + row_lengths[ii])] = aa
print(digits)
# [[1 2 3 4 0 0]
# [0 2 3 4 5 0]
# [0 0 3 4 5 6]]
print(digits.sum(0))
# [ 1 4 9 12 10 6]
一种更快的方法是直接计算输出,而不创建中间二维数组
out = np.zeros(np.max(row_lengths) + nr - 1, a.dtype)
for ii, aa in enumerate(arr_list):
out[ii:(ii + row_lengths[ii])] += aa
print(out)
# [ 1 4 9 12 10 6]
我有三个 numpy 数组。
import numpy as np
a=np.array((1,2,3,4))
b=np.array((2,3,4,5))
c=np.array((3,4,5,6))
并且我想以这种方式添加这些数组
a : [1 2 3 4]
+ b : [2 3 4 5]
+ c : [ 3 4 5 6]
= [1 4 9 12 10 6]
有什么简单的方法吗?
一种直观的方法(虽然效率低下)是创建一个零的中间数组,然后用 a
、b
、c
中的值填充每一行。 .. 适当的列移位。一旦你有了这个数组,你就可以对行求和以获得你想要的结果:
import numpy as np
a = np.array((1,2,3,4))
b = np.array((2,3,4,5))
c = np.array((3,4,5,6))
arr_list = [a, b, c]
nr = len(arr_list)
row_lengths = [len(aa) for aa in arr_list]
nc = np.max(row_lengths) + nr - 1
digits = np.zeros((nr, nc), a.dtype)
for ii, aa in enumerate(arr_list):
digits[ii, ii:(ii + row_lengths[ii])] = aa
print(digits)
# [[1 2 3 4 0 0]
# [0 2 3 4 5 0]
# [0 0 3 4 5 6]]
print(digits.sum(0))
# [ 1 4 9 12 10 6]
一种更快的方法是直接计算输出,而不创建中间二维数组
out = np.zeros(np.max(row_lengths) + nr - 1, a.dtype)
for ii, aa in enumerate(arr_list):
out[ii:(ii + row_lengths[ii])] += aa
print(out)
# [ 1 4 9 12 10 6]