Numpy:当这些值以步长间隔时,如何从值直接指定子数组
我有两个全局数组“Numpy:当这些值以步长间隔时,如何从值直接指定子数组,numpy,variable-assignment,numpy-ndarray,sub-array,numpy-slicing,Numpy,Variable Assignment,Numpy Ndarray,Sub Array,Numpy Slicing,我有两个全局数组“tab1”和“tab2”,其尺寸分别等于21x21和17x17 我想用[7:17:2,0:7]索引的“tab1”(按[15:20,0:7]索引)块“tab2”分配块(因此在第一个数组维度的元素之间有一个步骤):我尝试使用以下语法: tab1[15:20,0:7] = tab2[7:17:2,0:7] 不幸的是,这不起作用,似乎沿着[7:17:2]的“tab2”的值只考虑15:20的“对角线”(我是指一个接一个)元素 是否有办法将“tab1”的子数组与另一个子数组“tab2”分
tab1
”和“tab2
”,其尺寸分别等于21x21
和17x17
我想用[7:17:2,0:7]
索引的“tab1
”(按[15:20,0:7]
索引)块“tab2
”分配块(因此在第一个数组维度的元素之间有一个步骤):我尝试使用以下语法:
tab1[15:20,0:7] = tab2[7:17:2,0:7]
不幸的是,这不起作用,似乎沿着[7:17:2]
的“tab2
”的值只考虑15:20
的“对角线”(我是指一个接一个)元素
是否有办法将“tab1
”的子数组与另一个子数组“tab2
”分配,该子数组由具有步长间隔值的索引组成
如果有人能发现问题所在或提出其他方法,这将非常好
更新1:事实上,从我上次的测试来看,它看起来不错,但是对于块[15:20,15:20]
的分配也是一样的:
tab1[15:20,15:20] = tab2[7:17:2,7:17:2]
?
答:这似乎也适用于此区块作业,抱歉作业按我的预期进行
In [1]: arr = np.ones((20,10),int)
这两个块具有相同的形状:
In [2]: arr[15:20, 0:7].shape
Out[2]: (5, 7)
In [3]: arr[7:17:2, 0:7].shape
Out[3]: (5, 7)
分配一些有趣的内容,看起来是正确的:
In [4]: arr2 = np.arange(200).reshape(20,10)
In [5]: arr[15:20, 0:7] = arr2[7:17:2, 0:7]
In [6]: arr
Out[6]:
array([[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
...
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[ 70, 71, 72, 73, 74, 75, 76, 1, 1, 1],
[ 90, 91, 92, 93, 94, 95, 96, 1, 1, 1],
[110, 111, 112, 113, 114, 115, 116, 1, 1, 1],
[130, 131, 132, 133, 134, 135, 136, 1, 1, 1],
[150, 151, 152, 153, 154, 155, 156, 1, 1, 1]])
我从
arr2
中看到一个(5,7)值块,跳过像[80,100,…]这样的行。无法复制,只适合我。建议你提供更多细节。