python - 如何在 C# 中获取多维数组切片,numpy 样式?
问题描述
我有
int[,,,] arr = new int[5, 6, 7, 8]; // c#
arr = np.zeros((5, 6, 7, 8)) # Python
一个 4d 数组,带有5 * 6 * 7 * 8
单元格。
我想像在 numpy 中一样在 c# 中对其进行切片
var mySlice = arr[2:4, 0, :2, :]; // Won't work in C#, but looking for a way to do this. return type should be int[,,] A 3d array with 2 * 1 * 2 * 8 cells.
my_slice = arr[2:4, 0, :2, :]; # easy with numpy
如果这可以动态完成,那也很好。
如何在 C# 中对多维数组进行切片?
解决方案
据我所知,在 c# 中没有办法做到这一点。除了编写自己的多维数组类。
C# 8 引入了范围和数组切片。但这用于Span<T>
返回切片而不需要复制任何值。多维数组存储在连续内存中,因此潜在的多维切片运算符需要每个维度具有一个偏移量和长度。
推荐阅读
- windows-10 - localhost 可以工作,但 IIS 管理器不会在 Window10 上打开,即使在安装程序和功能中的所有内容都已打开
- anylogic - Anylogic 有没有一种方法可以按特定顺序从 rackSystem 中挑选物品?
- kubernetes - Kubernetes 集群内的 Canary 流量管理
- amp-html - AMP-AD 对自托管预投标服务器的自定义供应商请求
- java - 如何从android信号器调用中获取数据
- bluetooth-lowenergy - 在本机反应中获取附近的蓝牙设备
- excel - 如何在Excel中乘以百分比范围
- r - 通过计数行进行索引并在遇到条件时分配相同的索引号。最好使用 dplyr
- java - 无法在基于 GUI 的程序 java 中添加标题页
- base64 - Pronto 十六进制代码到 base64,如何转换