假设我有这个数组:
array = np.array([[1,2,3],[4,5,6],[7,8,9]])
returns:
123
456
789
我该如何让它做这样的事情呢
returns:
111222333
111222333
111222333
444555666
444555666
444555666
777888999
777888999
777888999
我不知道什么谷歌得到一个答案,因为我所有的结果都是不同的问题,因为我想这不是太常见的事情无论如何,任何和所有的帮助都将不胜感激:)
为了好玩(因为嵌套的reshape
将更有效),您可以在输入数组和具有额外维度的one
数组上使用einsum
来创建理想维度的多维数组为了重塑
到预期的2D形状:
np.einsum('ij,ikjl->ikjl', array, np.ones((3,3,3,3))).reshape(9,9)
一般方法是:
i,j = array.shape
k = 3 # extra rows
l = 3 # extra cols
np.einsum('ij,ikjl->ikjl', a, np.ones((i,k,j,l))).reshape(i*k,j*l)
输出:
array([[1, 1, 1, 2, 2, 2, 3, 3, 3],
[1, 1, 1, 2, 2, 2, 3, 3, 3],
[1, 1, 1, 2, 2, 2, 3, 3, 3],
[4, 4, 4, 5, 5, 5, 6, 6, 6],
[4, 4, 4, 5, 5, 5, 6, 6, 6],
[4, 4, 4, 5, 5, 5, 6, 6, 6],
[7, 7, 7, 8, 8, 8, 9, 9, 9],
[7, 7, 7, 8, 8, 8, 9, 9, 9],
[7, 7, 7, 8, 8, 8, 9, 9, 9]])
不管这种方法有多好,改变顺序以获得其他模式或使用更高维度都是非常容易的。
其他模式的示例:
>>> np.einsum('ij,iklj->iklj', a, np.ones((3,3,3,3))).reshape(9,9)
array([[1, 2, 3, 1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3, 1, 2, 3],
[1, 2, 3, 1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6, 4, 5, 6],
[4, 5, 6, 4, 5, 6, 4, 5, 6],
[4, 5, 6, 4, 5, 6, 4, 5, 6],
[7, 8, 9, 7, 8, 9, 7, 8, 9],
[7, 8, 9, 7, 8, 9, 7, 8, 9],
[7, 8, 9, 7, 8, 9, 7, 8, 9]])
>>> np.einsum('ij,kjil->kjil', a, np.ones((3,3,3,3))).reshape(9,9)
array([[1, 1, 1, 4, 4, 4, 7, 7, 7],
[2, 2, 2, 5, 5, 5, 8, 8, 8],
[3, 3, 3, 6, 6, 6, 9, 9, 9],
[1, 1, 1, 4, 4, 4, 7, 7, 7],
[2, 2, 2, 5, 5, 5, 8, 8, 8],
[3, 3, 3, 6, 6, 6, 9, 9, 9],
[1, 1, 1, 4, 4, 4, 7, 7, 7],
[2, 2, 2, 5, 5, 5, 8, 8, 8],
[3, 3, 3, 6, 6, 6, 9, 9, 9]])
你必须在这里使用np.repeat
两次。
np.repeat(np.repeat(array, 3, axis=1), 3, axis=0)
# [[1 1 1 2 2 2 3 3 3]
# [1 1 1 2 2 2 3 3 3]
# [1 1 1 2 2 2 3 3 3]
# [4 4 4 5 5 5 6 6 6]
# [4 4 4 5 5 5 6 6 6]
# [4 4 4 5 5 5 6 6 6]
# [7 7 7 8 8 8 9 9 9]
# [7 7 7 8 8 8 9 9 9]
# [7 7 7 8 8 8 9 9 9]]
如果一列存在于两个数据帧之间,我想删除它。我检查它是否存在,然后尝试删除它,但它说找不到。 错误:
问题内容: 我想分别沿轴0和轴1重复数组元素M和N次: 这行得通,但是我想知道有没有更好的方法而无需创建临时数组。 问题答案: 您可以使用kronecker产品,请参阅: 不过,您原来的方法也可以!
我试图在一个5年的时间序列图上绘制日期(N=50),我很难弄清楚如何在for循环上运行迭代。下面是我试图绘制日期的一个例子。 我正在绘制日期的视觉效果 目前,我正在尝试: 我收到一个错误: 我不确定这是否与dtype是datetime有关,或者我是否需要尝试另一种方法,但是任何建议/指导都非常感谢! 谢谢你! 这就是我试图完成的:示例图像 编辑:生成打印的代码 ` 这将复制我使用的精确数据的样本。
> 值1:8值2:16值3:3值4:13值5:24 它应该检查值是否在上限和下限之间。例如 0-9=2//(3,8)10-20=2//(13,16)20-30=1//(24)30-40=0等等。。。 但在代码中它只是显示。。。0-9=110-20=2 20-30=3 30-40=4,依此类推。
第一次来这里,所以我希望这是有意义的! 我有两个对象数组,比如l1和l2,我想在这两个列表之间进行比较,并在l3中得到一个不匹配的值。用户类包含2个字符串: 比如,l1包含:Java、JSF、JAXR、foo l2包含:JSF、JAXR 我可以对匹配的值进行比较,但不能对不匹配的值进行比较。这种逻辑似乎有缺陷。有什么帮助吗? 对于匹配值: 但是,对于不匹配,当我说不等于时,我得到的不是唯一的值,而
我试图确定数组中的位置。我真的不确定如何处理这种情况