问题标签 [numpy-slicing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 性能随着数组元素嵌套的增加而降低
一个简短的说明:这个问题与我之前问过的另一个问题有关,但是由于在一个问答中提出多个问题被认为是不好的 SO 风格,所以我把它分开了。
设置
我有以下两种矩阵计算的实现:
- 第一个实现使用 a
matrix of shape (n, m)
并且计算在 for 循环中重复 forrepetition
-times:
2. 第二种实现避免了额外的 for 循环,因此包含repetition = 3
到矩阵中,然后是shape (repetition, n, m)
:
问题
关于这两种实现,我发现了它们%timeit
在 iPython 中的性能:
- 第一个实现更快(在我的测试用例中,n=1000,m=1000:17 秒对 26 秒)。为什么
numpy
在三维而不是二维上工作时会这么慢?
matplotlib - 切片图像的通道并将通道存储到numpy数组中(与图像大小相同)。绘制未给出原始图像的 numpy 数组
我分离了彩色图像的 3 个通道。我创建了一个与图像大小相同的新 NumPy 数组,并将图像的 3 个通道存储到 3D NumPy 数组的 3 个切片中。绘制 NumPy 数组后,绘制的图像与原始图像不同。为什么会这样?
img
和数组都有new_img
相同的元素,但图像不同。
期望与原始图像相同的图像。
numpy - 如何对 numpy 数组进行切片并获得浅拷贝?
也许这已经解决了,但我还没有找到一个简洁的答案。我正在尝试使用索引数组对 numpy 数组进行切片,并且我希望切片数组是原始数组的浅表副本。
我认为这可以通过使用 ctypes 创建一个指针数组来解决,但我觉得这会很麻烦。我想知道是否有更有效的方法来做到这一点(即更少的代码,基于numpy)
例如:
我得到的金额相同,因为y
是 的副本x
,而不是视图。我想定义
使得 y 的条目是对 x 的条目的引用,并且
编辑
在这里找到有用的信息: Numpy 中的视图与副本:无法按照评论中的建议获得花哨切片的浅表副本,将编写 C 代码并将其包装以使其与 numpy 数组互操作。
python - 向后切片
我有一个从 0 到 999 的 numpy 数组,我想制作一个从列表中的最后一个元素 (999) 到中间的元素 (500) 的切片。
test[500:][::-1] 有效,但如果我有一个二维数组并且我只想沿第零轴这样做,它就不起作用,因为它也会反转第二个轴。
numpy - 加速涉及数组切片和广播的numpy代码
我有以下代码:
N-
基本上以上是计算层结构电场的代码的一部分。对于循环内的每次迭代for
,我找到第 th 层内的数组元素的索引N
,然后在计算电场后,我将整个事物乘以idx
“过滤”出满足的正确部分sp.logical_and(Z<d_cum[n], Z>=d_cum[n-1])
。
它工作得很好,但我想知道是否有一种更有效的方法可以使用 numpy 数组切片或其他方法来执行此操作,因为每次乘法都涉及很大比例的数组元素,这些元素在每次迭代中都不被接受。我尝试了以下类似的方法,仅适用于坐标数组的相关部分Z
和X
但是然后Z2
变成X2
一维数组,我不确定其中的索引部分E
或如何适当地重塑数组。
那么有什么方法可以加快原始代码的速度呢?
python - 如何从该列表中获取最后一列?
我想为我的 numpy 数组中最右边的列找到一个表达式。
它包含一个数字和一个元组。这是其中的一个元素:
我不确定如何最好地格式化它,但我至少可以清楚 \n 分隔元素,因此 my_list[0] 包含两个元素:0.04715440011642294 和 (array([-0.50099999, 0.056 , 1.61699998]), 0.046637045285032784)。
我想要的是包含元组内部所有第二个元素的列。因此,例如,如果第二个元素是
那我想要
如果我尝试str(my_list[:, 1::][0])
,我可以单独获得元组:
'[(array([-0.50099999, 0.056 , 1.61699998]), 0.046637045285032784)]'
但是,当我尝试使用与获取列表第二列相同的技术来访问元组的第二列时,它不起作用。
my_list[:, 1::][:, 1::]
具有正确的长度,但充满了空元素。我做了很多尝试来获得正确的语法,但我无法终生提取我想要的列。这尤其令人沮丧,因为我可以轻松键入my_list[:-1, 1::][0][0][1]
并获取我想要的列的第一个元素。当然,如果我能得到一个元素,我应该能够找到该列的表达式吗?
python - 布尔切片交换 numpy 数组的维度
对于一些 nd 数组
我想根据一些布尔语句对最后一个维度进行切片。
但是,返回 (4,5) 而我希望 (5,4) 的形状像
那么,这里发生了什么?
(此行为仅在我通过从中选择一个奇异切片来删除第一个维度时发生。)
python - 在 3-D numpy 数组的小切片上有效地使用 1-D pyfftw
我有一个大小约为 10,000x512x512 的 3D 数据立方体。我想重复解析沿 dim[0] 的向量窗口(例如 6)并有效地生成傅立叶变换。我想我正在将数组复制到 pyfftw 包中,这给了我巨大的开销。我现在正在查看文档,因为我认为我需要设置一个选项,但我可以在语法上使用一些额外的帮助。
这段代码最初是由另一个人用 numpy.fft.rfft 编写的,并用 numba 加速。但是该实现在我的工作站上不起作用,所以我重新编写了所有内容并选择使用 pyfftw。
会发生什么是我得到一个 4D 数组;变量通道块。我将每个通道保存为二进制文件(不包含在上面的代码中,但保存部分工作正常)。
这个过程适用于我们的解调项目,然后将 4D 数据立方体 channelChunks 解析为 eval(numChannel) 3D 数据立方体(电影),并且根据我们的实验设置,我们可以通过颜色分离电影。我希望我可以绕过编写一个通过 pyfftw 在矩阵上调用 fft 的 C++ 函数。
实际上,我在给定的 1 轴和 2 轴索引处沿 dataChunk 的 0 轴获取 windowSize=6 个元素并执行 1D FFT。我需要在整个 3D 数据块中执行此操作以生成解调电影。谢谢。
numpy - 在 numpy/pytorch 中使用 bool 数组或索引数组进行索引是否更快?
我可以使用相同形状的布尔数组/张量或包含我所追求的元素的整数索引的数组/张量来索引我的 numpy 数组/pytorch 张量。哪个更快?
python - 独立到列的 Numpy 索引
假设我有一个像
我有一个这样的索引列表:
哪里idx.shape[1] == arr.shape[1]
。我想要返回的是:
也就是说,一个数组,其中一些(i, j)
, out[i,j] == arr[idx[i,j], j]
。