问题标签 [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.

0 投票
0 回答
302 浏览

python - 将空字符列添加到熊猫数据框很奇怪

我有一个要添加新列“being_narrative”的数据框。数据框信息如下所示:

数据框信息

数据框具有以下行索引:

在此处输入图像描述

我尝试使用以下命令添加字符串类型的新列:

但是,它给出了带有复制警告的设置:

_main__:1:SettingWithCopyWarning:试图在 DataFrame 的切片副本上设置一个值。尝试改用 .loc[row_indexer,col_indexer] = value

当我尝试在不同的数据帧上使用上述命令时,我没有收到此警告: 在此处输入图像描述

此外,没有为该列分配新值

运行上述分配后,新列仍然为空: 在此处输入图像描述

但是,这可以单独工作,如下所示: 在此处输入图像描述

似乎问题出在数据框上。可能是什么问题呢?提前致谢!

更新:

尝试使用@Aryerez 的建议来使用 .loc 约定,首先删除列,然后使用:

但是再次收到警告,显然数据框存在问题:

在此处输入图像描述

0 投票
0 回答
76 浏览

python - 如何根据条件快速切片数组?

我有一个巨大的嵌套 for 循环......总共 10 个,但为了说明,我包括 6 个。我正在做一个求和(在多个索引上;incides 不是独立的!)。任何内部 for 循环中的索引取决于外部循环的索引(一个实例除外)。最里面的循环包含一个操作,在该操作中,我根据 8 个不同的条件对数组(名为“w”)进行切片,所有条件都使用“&”和“|”组合。还有一个“HB”函数将这个切片数组(名为“wrange”)作为参数,对其执行一些操作并返回一个相同大小的数组。

此切片和执行“HB”函数的时间刻度分别为 300-400 微秒和 100 微秒。我需要彻底降低它。到纳秒。!!

尝试使用字典而不是数组(我正在切片)。它要慢得多。尝试存储所有可能值的切片数组。这本身就是一个非常庞大的计算,因为有许多可能的条件组合(这些条件间接取决于 for 循环的索引)

s 从 1 到 49

t 从 -s 到 s

l,n 有 641 种组合

在这里,我发布了一个 s,t 和一个 l,n 组合的值以进行说明。

TL;博士

运行整个部分大约需要 30 秒。我需要把它降到尽可能低。1秒是最小目标

0 投票
2 回答
366 浏览

python - 如何测量numpy数组区域的平均值

使用 numpy 相当新,我有一段代码,我有一个二维数组(图像),我想用数组计算正方形区域的平均值和标准差。所以 +/- 特定点周围的行和列中的某个增量

现在我的代码看起来像这样(对于 (100, 100) 左右的 20 像素大小的任意区域):

问题

是否有更简洁或更 numpy'ish/python'ish 的计算切片以馈入 mean() 和 std() 的方法,它不占用这么多行?(我知道我可以用 numpy.where() 来做到这一点,但条件会占用几乎一样多的行)

谢谢!

0 投票
1 回答
141 浏览

python - [:][:] 和 [:,:] 在 NumPy 中有什么区别?

我对 python 编程非常熟悉,但是我发现了一些奇怪的情况,其中以下两行代码提供了不同的结果(假设两个数组是二维的):

我想知道是否有任何情况,解释。

有什么提示吗?

例子 :

0 投票
1 回答
703 浏览

arrays - 切片numpy数组的最后两列

如何切片 numpy 数组的最后 2 列?

例如: A = np.array([[1, 2, 3], [4, 5, 6]]) 我想将 B 作为 A 的最后两列,即[[2, 3], [5, 6]]

我知道我可以从数组的开头索引它,例如B = A[:, 1:3]. 但是我正在寻找一种通用形式,通过从末尾开始索引来对 A 进行切片,因为在我的情况下 A 的列数会发生变化。

0 投票
0 回答
12 浏览

numpy - 从一维数组的偏移范围有效地构造 numpy 矩阵

假设我有一个一维数据数组。我想(有效地)生成一个矩阵,使得矩阵的每一行都是数据数组中连续的值范围,并且矩阵的每一行(在原始数据数组中)偏移 1,相对于上一行。

这个例子可能会让它更容易理解:

产生:

我显然已经想出了如何做到这一点,但我认为必须有一种更有效的 numpythonic 方法来避免 for-loop/stack。我将需要做很多(在另一个循环中)并且希望最大化性能。

TIA

0 投票
3 回答
372 浏览

python - numpy数组切片行和列的交集

我需要对一个 numpy 数组进行切片,以便获得一个对应于深绿色区域的数组: array

绿色区域是列和行中多个范围的交集。我想到了类似的东西:

M[[1:3,5:7],[1:3,5:7]]=np.zeros(4,4)

但它不起作用。我怎样才能有效地做到这一点?

0 投票
1 回答
53 浏览

python - 索引ndarray时应该如何使用arange函数?

假设我想为每一行从不同的列中选择一个值。然后,我可能会做这样的事情:

对我来说,需要指定整个范围似乎有点“难看”;此外,即使是arange通话也需要时间:

有没有办法避免使用范围?

概括上述问题;如何为每一行选择不同的相邻列集(每组大小相等)而不是单个值?我想避免创建许多手动范围,如下所示:

现在,我看到使用上述列范围的唯一方法是像这样索引:

理想情况下,我想使用类似的符号a[:, columns]代替a[np.arange(a.shape[0]), columns],而a[:, columns:columns + window_length]不是a[rows, :][:, column_ranges][np.arange(len(rows)), np.arange(len(rows)), :]

0 投票
1 回答
98 浏览

python - 如何从另一个二维数组中分割一个二维数组并获得其余部分

我有一个 numpy 数组A = np.array([[0, 1, 0, 0, 0],[0, 0, 1, 0, 0],[1, 0, 1, 1, 1]])

我想B = np.array([[0, 1, 0],[0, 0, 1],[1, 0, 1]])从 A 切片并将 A 的其余部分作为一个 numpy 数组获取C = np.array([[0, 0], [0, 0],[1,1]])

我正在寻找一个通用代码,因为我的矩阵 B 在 A 内部的不同迭代中发生变化。

谢谢

0 投票
0 回答
112 浏览

numpy - 有没有办法在一个批处理操作中从一个 2D numpy 数组中切出多个 2D numpy 数组?

我有一个 numpy 数组heatmapshape(img_height, img_width)和另一个 shape 数组bboxes(K, 4)其中K是一些边界框。每个边界框的定义如下[x_top_left, y_top_left, width, height]:这是此类数组的示例:

heatmap最初用零填充。我需要做的是将每个边界框的值 1 放在相应的位置。结果heatmap应该是:

需要注意的重要事项:

  • 轴 0 对应于图像高度
  • 轴 1 对应于图像宽度

我已经使用 python for 循环解决了这个问题,如下所示:

我想避免使用 python for 循环(如果可能的话)并且能够做这样的事情:

有没有办法在 numpy 中进行多次切片?

我知道numpy integer array indexing,但是要生成这样的索引,我也无法避免 python for 循环。