【发布时间】:2021-04-04 19:16:09
【问题描述】:
跑步
import numpy as np
a1 = np.arange(1, 5)
a2 = np.arange(2, 6)
a = np.array([a1, a2])
a[a <= 3]
结果
array([1, 2, 3, 2, 3])
相反,我想得到
np.array([[1, 2, 3], [2, 3]])
我应该如何更新上面的代码?我尝试了不同的切片,take、take_along_axis 无济于事。
PS:请注意,以上被认为是一个参差不齐的序列
可见弃用警告: 从参差不齐的嵌套序列创建一个 ndarray(这是一个 列表或元组的列表或元组或具有不同长度的 ndarray 或 形状)已弃用。如果您打算这样做,则必须指定 创建 ndarray 时的 'dtype=object' np.array([[1, 2, 3], [2, 3]])
【问题讨论】:
-
为什么要创建一个形状不明确的ndarray?您想从
a获得什么信息? -
您无法通过索引生成参差不齐的序列。你能做的最好的就是逐行迭代。
-
@Moosefeather 我想使用生成的 ndarray 来索引另一个 ndarray aka。 b[a]=1.0(这也可能不起作用...)
-
@gliptak 也许你想要的是
np.where? -
arr[bool_array]总是生成一维数组。如果不清楚,您需要重新阅读基本的 numpy 索引文档。 numpy.org/doc/stable/reference/…。并且试图得到一个参差不齐的数组是一个强有力的指标,表明整个数组,无循环,计算是不可能的。
标签: python numpy numpy-ndarray numpy-slicing