让 numpy.concatenate 返回正确的子类而不是普通的 ndarray
我有一个 numpy 数组子类,我希望能够连接它们。 将 numpy 导入为 np 类 BreakfastArray(np.ndarray): def __new__(cls, n=1): dtypes=[(“华夫饼”,在...
假设我有一个 Numpy 数组 n 个索引,其中前 n-2 表示一些计数索引,最后 2 个索引表示一个 MxM 方阵。我想初始化这个结构,这样它将...
假设我有一个 Numpy 数组 n 个索引,其中前 n-2 表示一些计数索引,最后 2 个索引表示一个 MxM 方阵。我想初始化这个结构,这样它将...
我有一个 (4,5) 的二维数组和另一个 (4,2) 形状的二维数组。第二个数组包含我需要从第一个数组中过滤掉的开始和结束索引,即我想对第一个数组进行切片...
我仍在掌握 jax 的最佳实践。我的广泛问题如下: 在 jax 中实现自定义数组创建例程的最佳实践是什么? 例如,我想要...
以下片段: 将 numpy 导入为 np x = np.arange(25).reshape(5, 5) 打印(x.base) y = x[:2, [0, 2]] 打印(y.base) 输出 [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
我想知道是否有人对 nanobind 有深入的了解,用于将 ndarray 从 c++ 返回到 python。 我只是想返回一个给定大小的 ndarray,并用数据填充它。我不想管理...
我有一个零维 numpy 标量 s 和一个二维 numpy 矩阵 m。我想形成一个向量矩阵,其中 m 的所有元素都与 s 配对,如下例所示: 导入
我有一个 numpy 数组,通过 to_numpy() 函数从笨拙的数组转换而来,结果数组的数据类型为: dtype=[('phi', ' 我有一个 numpy 数组,通过 to_numpy() 函数从笨拙的数组转换而来,结果数组的数据类型为: dtype=[('phi', ' 我尝试了常规的 asdtype 函数,但我得到的只是错误 我相信你的问题与此相同:你有一些带有记录结构的尴尬数组, >>> array = ak.Array([{"phi": 1.1, "eta": 2.2}, {"phi": 3.3, "eta": 4.4}]) 当您使用 ak.to_numpy 进行转换时,它会将记录字段转换为 NumPy 结构化数组 字段: >>> ak.to_numpy(array) array([(1.1, 2.2), (3.3, 4.4)], dtype=[('phi', '<f8'), ('eta', '<f8')]) TensorFlow 和 PyTorch 等 ML 库希望特征向量不具有带名称的字段,而是相反是二维数组,其中第二维范围涵盖所有特征。如果所有 NumPy 结构化数组数据类型都相同,因为在本例中它们都是 <f8,您可以查看它: >>> ak.to_numpy(array).view("<f8").reshape(len(array), -1) array([[1.1, 2.2], [3.3, 4.4]]) 但这不安全。例如,如果您的某些字段是 32 位而其他字段是 64 位,或者某些字段是整数而其他字段是浮点型,则 view 将重新解释内存,从而丢失数字的含义: >>> bad = np.array([(1, 2, 3.3), (4, 5, 6.6)], dtype=[("x", "<i4"), ("y", "<i4"), ("z", "<f8")]) >>> bad.view("<f8").reshape(len(bad), -1) array([[4.24399158e-314, 3.30000000e+000], [1.06099790e-313, 6.60000000e+000]]) (z的 3.3 和 6.6 被保留,但是 x 和 y 被合并到一个字段中,并且原始内存被解释为浮点数。) 相反,我们应该在 Awkward 中调整结构,它有工具可以完成这类事情,然后将其转换为 NumPy(并从那里转换为 TensorFlow 或 PyTorch)。 因此,我们从具有命名字段的记录数组开始: >>> array <Array [{phi: 1.1, eta: 2.2}, {...}] type='2 * {phi: float64, eta: float64}'> 我们希望命名字段消失并创建这些单独的数组。那是 ak.unzip. >>> ak.unzip(array) (<Array [1.1, 3.3] type='2 * float64'>, <Array [2.2, 4.4] type='2 * float64'>) (元组中的第一个来自 phi,第二个来自 eta。) 我们希望将每个字段的值一起放入机器学习模型的相同输入向量中。也就是说,1.1和2.2应该在向量[1.1, 2.2]中,并且3.3和4.4应该在向量[3.3, 4.4]中。这是该元组中数组的串联,但不是 axis=0 的串联,从而形成 [1.1, 3.3, 2.2, 4.4];它必须是更高层axis=1中的串联。该轴尚不存在,但我们始终可以使用 np.newaxis. 制作长度为 1 的轴。 >>> ak.unzip(array[:, np.newaxis]) (<Array [[1.1], [3.3]] type='2 * 1 * float64'>, <Array [[2.2], [4.4]] type='2 * 1 * float64'>) 现在 ak.concatenate 与 axis=1 会将 [1.1] 和 [2.2] 连接成 [1.1, 2.2] 等 >>> ak.concatenate(ak.unzip(array[:, np.newaxis]), axis=1) <Array [[1.1, 2.2], [3.3, 4.4]] type='2 * 2 * float64'> 最后,这里有一个单行代码,您可以将其传递给 TensorFlow,即使您的记录字段具有不同的 dtypes,它也能正常工作: >>> ak.to_numpy(ak.concatenate(ak.unzip(array[:, np.newaxis]), axis=1)) array([[1.1, 2.2], [3.3, 4.4]]) 或者,实际上,也许您可以跳过 ak.to_numpy 并直接进入 ak.to_tensorflow。
我对Python有点陌生,想摆脱for循环的使用,因为它使程序变得非常慢。所以我想对其进行矢量化。但是,我不确定如何在两个条件下使用它......
如何使用 NumPy 将重复条目从第二次出现开始标记为 True?
问题 我有一个 NumPy 数组,需要识别重复的元素,将第二次出现及之后的元素标记为 True,同时将第一次出现标记为 False。 例如,给定以下...
我在连接两个 xarray 数据文件时遇到问题。这两个文件(MODIS LST,通过 STAC API 访问)来自相同的日期/时间,但对应于相邻的地理图块(s...
我正在尝试使用 Pytorch 定义 NN 模型,但是当我想将 y-train 转换为 y-train-tensor 时出现类型错误,我应该如何修复它?
这是我的代码。我将威斯康星州乳腺癌数据库从 kaggle 导入到 vscode。所有数据集变量均为数字和浮点 64。存在此类型错误(发生异常:TypeError 不能骗...
我有带有随机数的numpy数组。例如像这样 [7 1 2 0 2 3 4 0 5] 我想同时替换每个数字,如果这个数组中的数字= 7,我想用 2 替换它,al...
如果我有一个向量 vec,我可以用矩阵对其进行索引,如下所示: 将 numpy 导入为 np vec = np.asarray([1,2,3,4]) # 形状 (4,) mat = np.asarray([[0,2], [3,1]]) # 形状 (2,2) 结果...
我有以下类型的整数数组: 将 numpy 导入为 np Seed_idx = np.asarray([[0, 1], [1, 2], [2, 3], [3, 4]], dtype=np.int_)
如何为 numpy 数组输入编写一个函数,其操作取决于输入的数值
该函数具有以下数学形式 f(x) = 1,如果 x<1 = g(x), for 1<=x<10 = 0, for x >=10 其中 g(x) 是一个简单函数。 编写这样的函数很简单...
添加具有不同轴数组的 2D numpy 数组:如何用 RectBivariateSpline 正确替换已弃用的 interp2d?
我需要添加两个可能不同形状的 2D numpy 数组和不同的对应轴数组。 我的意思是这样的:让我们定义两组不同的 x 轴和 y 轴,并计算 z 值...
我有一个 numpy 数组的 numpy 数组,我需要为每个内部数组添加一个前导零: a = [[1 2] [3 4] [5 6]] --> b = [[0 1 2] [0 3 4] [0 5 6]] 像这样循环: 对于项目我...
我遇到了一个问题,即在索引后保存 numpy 数组会导致保存速度慢得多。下面是一个最小的可重现示例: 导入时间 将 numpy 导入为 np def mre(save_pat...