gpt4 book ai didi

python - 如何将成对数组列表转换为 2x1 数组?

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:18 24 4
gpt4 key购买 nike

我正在尝试用 Python 编写一个 Hill Cipher 程序,允许用户输入自己的 2x2 矩阵和要编码或解码的消息。消息“Hello World”已被加密到以下列表中:

Num_Msg= [array([-24,   5]), array([12, 12]), array([ 15, -64]), array([-9, 15]), array([18, 12]), array([  4, -64])]

现在我想获取每个数组并将它们转换为 2x1 向量,以便通过 2x2 矩阵键转换为 np.dot 。编码

for i in Num_Msg:

Vector=[np.ndarray(Num_Msg[i],shape=(2,1))]
Dot_Product=np.dot(Vector,Key_Matrix)

结果

TypeError: only integer arrays with one element can be converted to an index.

我也尝试了类似的 np.reshape (Num_Msg,(2,1)) 以获得类似的结果。对这个项目的任何帮助都会很棒

最佳答案

您看到的问题是 i 已经是您的向量。所以你正在寻找的循环是

for Vector in Num_Msg:   # Notice Vector is the variable we're iterating over
Dot_Product=np.dot(Vector, Key_Matrix)

清理完所有内容后,您最终会得到

Num_Msg = np.array([[-24, 5], [12, 12], [15, -64], [-9, 15], [18, 12], [4, -64]])
Key_Matrix = numpy.random.rand(2, 2)

Dot_Product = numpy.array([np.dot(V, Key_Matrix) for V in Num_Msg])

但是,不需要 for 循环,但您可以让 numpy.einsum 为您执行循环:

Dot_Product2 = numpy.einsum('fi,ij->fj', Num_Msg, Key_Matrix)

并确保两者实际上产生相同的结果:

numpy.allclose(Dot_Product, Dot_Product2)    # True

关于python - 如何将成对数组列表转换为 2x1 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43930047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com