python - 为numpy数组切片的奇数和偶数元素分配不同的值
问题描述
是否可以为 numpy 数组切片的偶数和奇数元素分配不同的值?
将起作用的代码示例:
a=np.zeros(100)
b=np.arange(10,50,10)
print(a)
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0.]
a[b]=10
print(a)
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10. 0. 0. 0. 0. 0. 0. 0.
0. 0. 10. 0. 0. 0. 0. 0. 0. 0. 0. 0. 10. 0. 0. 0. 0. 0.
0. 0. 0. 0. 10. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
现在,我正在尝试为切片 a[b] 的偶数和奇数元素分配不同的数字
a[b][::2] = 10
a[b][1::2] = -10
但这不起作用,初始的零数组不会修改。
简短的通知-实际上,b和a是动态生成的,因此我通常不知道它们的形状(a和b)以及哪些索引将在(b)内
解决方案
您应该直接索引b
:
import numpy as np
a = np.zeros(100)
b = np.arange(10,50,10)
a[b[::2]] = 10
a[b[1::2]] = -10
print(a[b])
# [ 10. -10. 10. -10.]
推荐阅读
- tensorflow - 如何将 tensorflow 2 中的 y_true 和 y_pred 转换为 numpy 数组?
- java - 如何在 HashMap 中返回具有最相关值的键
- r - 带因子和连续变量的重复单回归
- python-3.x - 以字符串格式存储的 DynamoDB 时间戳属性,应检索指定时间戳范围内的记录
- c++ - 为什么 mi 代码在 SSE2 中编译正常,但在 ARM(无 NEON)中编译不正确?
- python - 获取列表中最近的非无项目
- php - WooCommerce 在预定日期发送电子邮件
- javascript - 计算 Ramer-Douglas-Peucker 公差的最佳方法
- serial-port - socat 记录串口数据
- node.js - 我如何 res.sendFile 回到上一级