gpt4 book ai didi

python - numpy.array 从 d 维数组中选择所有偶数元素

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:02 25 4
gpt4 key购买 nike

是否有一种高效的 p​​ythonic 方法,可以在事先不知道 d 的情况下,从 d 维数组中选择所有具有偶数索引的元素?以及所有剩余的(即所有至少具有奇数索引的那些)?

第一个问题的最小示例

import numpy as np
a = np.array(range(27)).reshape((3,3,3))
a[::2,::2,::2]
# -> array([[[ 0, 2],
# [ 6, 8]],
# [[18, 20],
# [24, 26]]])

我为 d 维对象找到的唯一非 pythonic 方式,d 是可变的至少对于“全偶数”部分,“至少一个奇数”仍然让我难以理解。

d = 3
a = np.array(range(3**d)).reshape([3]*d)
b = a
for i in range(d):
b = np.take(b, np.array(range(0,b.shape[i],2)), axis=i)

我问这个问题的原因(可能已经有更高级别的解决方案)是我想迭代创建一个大小为 (2**n+1, .. ., 2**n+1) 在 n 个步骤中,在每个步骤中复制前面步骤中的偶数索引元素,例如:

for n in range(N):
new_array = np.zeros([2**n+1]*d)
new_array[all_even] = old_array
new_array[at_least_one_odd] = #something else

提前感谢您的任何提示!

最佳答案

我猜你可以使用切片对象。

even = a[[slice(None, None, 2) for _ in range(a.ndim)]]
odd = a[[slice(1, None, 2) for _ in range(a.ndim)]]

关于python - numpy.array 从 d 维数组中选择所有偶数元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839634/

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