笛卡尔积 +运算

笛卡尔积的符号化为:
A×B={(x,y)|x∈A∧y∈B}

例如,A={a,b}, B={0,1,2},则
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}

Numpy:x和y数组点的笛卡儿乘积成二维点的单个数组

两个numpy数组,它们定义了网格的x和y轴。例如:
x = numpy.array([1,2,3])y = numpy.array([4,5])
生成这些数组的笛卡儿积

array([[1,4],[2,4],[3,4],[1,5],[2,5],[3,5]])
在某种程度上,这并不是非常低效率,因为我需要在一个循环中多次这样做。我假设将它们转换为Python列表并使用itertools.product返回到numpy数组并不是最有效的形式。

>>> numpy.transpose([numpy.tile(x, len(y)), numpy.repeat(y, len(x))])array([[1, 4],
       [2, 4],
       [3, 4],
       [1, 5],
       [2, 5],
       [3, 5]])

N=4
I=range(1,N)
J=range(1,N)
print(np.kron(I,J))

x=np.arange(1,N)
y=np.arange(1,N)
V1=np.transpose([np.repeat(y, len(x)),np.tile(x, len(y))])
#%%
[[1 1]
 [1 2]
 [1 3]
 [2 1]
 [2 2]
 [2 3]
 [3 1]
 [3 2]
 [3 3]]

看见使用numpy构建两个数组的所有组合的数组关于计算N个数组的笛卡儿乘积的一般解。

您可以在python中进行正常的列表理解。

x = numpy.array([1,2,3])y = numpy.array([4,5])[[x0, y0] for x0 in x for y0 in y]
这应该给你

[[1, 4], [1, 5], [2, 4], [2, 5], [3, 4], [3, 5]]

Numpy:x和y数组点的笛卡儿乘积成二维点的单个数组_慕课猿问 https://www.imooc.com/wenda/detail/564541

https://stackoverflow.com/questions/1208118/using-numpy-to-build-an-array-of-all-combinations-of-two-arrays

d={(i,j):i+j for i in range(1,4) for j in range(1,4)}

print(d)
{(1, 1): 2, (1, 2): 3, (1, 3): 4, (2, 1): 3, (2, 2): 4, (2, 3): 5, (3, 1): 4, (3, 2): 5, (3, 3): 6}

你可能感兴趣的:(数学大类专栏,python,矩阵,线性代数)