- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想获取 3D 数组的多个子数组。我可以使用 Stack 帖子中找到的函数在 2D 情况下拆分数组:
def blockshaped(arr, nrows, ncols):
h, w = arr.shape
return (arr.reshape(h//nrows, nrows, -1, ncols)
.swapaxes(1,2)
.reshape(-1, nrows, ncols))
所以我想将其扩展到 3D 数组情况,将 block 形成为 2D 数组,但在第一维的每个切片中。我尝试使用“for 循环”但不起作用......
例如:
import numpy as np
#2D case (which works)
test=np.array([[ 2., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 3., 1., 1., 1.],
[ 1., 1., 1., 1.]])
def blockshaped(arr, nrows, ncols):
h, w = arr.shape
return (arr.reshape(h//nrows, nrows, -1, ncols)
.swapaxes(1,2)
.reshape(-1, nrows, ncols))
sub = blockshaped(test, 2,2)
我得到 4 个“子数组”:
array([[[ 2., 1.],
[ 1., 1.]],
[[ 1., 1.],
[ 1., 1.]],
[[ 3., 1.],
[ 1., 1.]],
[[ 1., 1.],
[ 1., 1.]]])
但是对于 3D 数组作为输入:
test2=np.array([[[ 2., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 3., 1., 1., 1.],
[ 1., 1., 1., 1.]],
[[ 5., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 2., 1., 1., 1.],
[ 1., 1., 1., 1.]]])
所以在这里我想要相同的分解,但是在 2 个“切片”中......
def blockshaped(arr, nrows, ncols):
h, w, t = arr.shape
return (arr.reshape(h//nrows, nrows, -1, ncols)
.swapaxes(1,2)
.reshape(-1, nrows, ncols))
我尝试使用“for 循环”但不起作用:
for i in range(test2.shape[0]):
sub = blockshaped(test[i,:,:], 2, 2)
最佳答案
您的 for 循环解决方案可以执行以下操作:
sub = np.array([blockshaped(a, 2, 2) for a in test2])
但是你可以稍微修改blockshape()
,在切片之前和之后 reshape 数据:
def blockshaped(arr, nrows, ncols):
need_reshape = False
if arr.ndim > 2:
need_reshape = True
if need_reshape:
orig_shape = arr.shape
arr = arr.reshape(-1, arr.shape[-1])
h, w = arr.shape
out = (arr.reshape(h//nrows, nrows, -1, ncols)
.swapaxes(1, 2)
.reshape(-1, nrows, ncols))
if need_reshape:
new_shape = list(out.shape)
new_shape[0] //= orig_shape[0]
out = out.reshape([-1,] + new_shape)
return out
关于Python-获取 3d 数组的 "subarrays",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26648781/
我在使用 mongoose 包的 Node js 中有以下代码。 1)如果我使用填充方法,如何删除响应中基础数组中的字段总计?因为该数组是由对另一个集合的引用形成的。 2) 如何使用“campaign
我正在尝试创建一个函数,该函数将从较大数组中检查 3x3 数组元素 block 中的特定元素。 9...84.6. ..4..75.8 .3....... 3....1... .7.5.6.4
我正在开展一个项目,该项目需要找到包含在较大二维整数数组中的一些较小二维整数数组。 更具体地说,我将获得一个文本文件以供输入。文本文件将包含 N、M 和 K 值,以及填充“大”MxN 网格的整数。然后
最近我发现了这段 C 代码,用于查找数组中等于和的整数。 int subArraySum(int arr[], int n, int sum) { /* Initialize curr_sum as
我有一个关于将数组第一个元素的地址传递给(递归)函数的问题: selectionSort( &b[1], size-1); 据我所知,本地址被传递给函数时,函数参数必须是一个指针。 selection
我正在寻找这样的东西: virtualArray = VirtualArray((parent1,2:5,1:3), (parent2,1:15,5:7)) 它将构造类似于 SubArray 的东西,
我正在尝试运行一个名为 IsSubArray 的程序。有 2 个输入文本框。一个叫大阵,一个叫子阵。任务是检查子数组中的值是否连续匹配大数组中的数字。例如: 数组 1:1,3,6,5,4 数组 2:1
题目地址:https://leetcode.com/problems/binary-subarrays-with-sum/description/ 题目描述 Inan array A of 0s
题目地址:https://leetcode.com/problems/maximum-average-subarray-i/description/open in new window 题目描述
我曾经在网上看到这个编码问题.. Given an integer array nums, find the contiguous subarray (containing at least one
问。给定两个长度相等的数组 A 和 B,找到索引 [i,j] 的最大可能连续子数组,使得 max(A[i: j]) B[j]: Bq.pop() Bq.app
问。给定两个长度相等的数组 A 和 B,找到索引 [i,j] 的最大可能连续子数组,使得 max(A[i: j]) B[j]: Bq.pop() Bq.app
我听说 SubArray 和其他数组操作在未来是 eventually due for a performance overhaul。目前,由于 SubArray 运行缓慢,我的代码出现了一些相当小的
我试图用分而治之的方法解决最大子数组和问题,但是发生了运行时错误(StackOverFlow),我不知道如何处理它,我认为它的发生只是因为我的递归调用。这是我的方法(错误发生在第一个递归行): cla
我想获取 3D 数组的多个子数组。我可以使用 Stack 帖子中找到的函数在 2D 情况下拆分数组: def blockshaped(arr, nrows, ncols): h, w = ar
void kadane(int A[], int N, int& bestStart, int& bestEnd, int& bestSum) { int max_ending_here =
我正在试着解决Leetcode问题“1588,所有奇数长子数组之和”。‘给定一个正整数arr数组,返回arr的所有可能的奇数长子数组之和,其中一个子数组是数组的连续子序列’。。我的尝试如下:。它对一些
我正在试着解决Leetcode问题“1588,所有奇数长子数组之和”。‘给定一个正整数arr数组,返回arr的所有可能的奇数长子数组之和,其中一个子数组是数组的连续子序列’。。我的尝试如下:。它对一些
题目地址: https://leetcode.com/problems/minimum-size-subarray-sum/description/ 题目描述: Given an array of
题目地址:https://leetcode.com/problems/maximum-length-of-repeated-subarray/description/ 题目描述: Given tw
我是一名优秀的程序员,十分优秀!