首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >与numpy中的数组索引选择类似,但在javascript中

与numpy中的数组索引选择类似,但在javascript中
EN

Stack Overflow用户
提问于 2018-10-06 01:07:26
回答 6查看 346关注 0票数 2

我有一个3x3数组:

代码语言:javascript
复制
var my_array = [[0,1,2],
                [3,4,5],
                [6,7,8]];

并希望获得它的第一个2x2块(或任何其他2x2块):

代码语言:javascript
复制
[[0,1], 
 [3,4]]

对于numpy,我会写道:

代码语言:javascript
复制
my_array = np.arange(9).reshape((3,3))
my_array[:2, :2]

以获得正确的结果。

我尝试使用javascript:

代码语言:javascript
复制
my_array.slice(0, 2).slice(0, 2);

但是第二个切片影响第一个维度,什么也不做。我是注定要使用for循环,还是有一些新的ES6语法可以让我的生活变得更简单?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-10-06 01:12:01

可以使用Array.sliceArray.map的组合

代码语言:javascript
复制
const input = [
  [0, 1, 2],
  [3, 4, 5],
  [6, 7, 8]
];

const result = input.slice(0, 2).map(arr => arr.slice(0, 2));

console.log(result);

票数 2
EN

Stack Overflow用户

发布于 2018-10-06 01:11:51

您可以使用.map().slice()方法:

代码语言:javascript
复制
var my_array = [[0,1,2],
                [3,4,5],
                [6,7,8]];
                
var result = my_array.slice(0, 2).map(a => a.slice(0, 2));

console.log(result);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 1
EN

Stack Overflow用户

发布于 2018-10-06 01:13:38

您可以将对象作为索引和所需的子数组的长度。然后切片并映射切片的子数组。

代码语言:javascript
复制
var array = [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
    length = { x: 2, y: 2 },
    indices = { i: 0, j: 0 },
    result = array.slice(indices.i, indices.i + length.x).map(a => a.slice(indices.j, indices.j + length.y));
    
console.log(result);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52670377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档