小编use*_*194的帖子

Numpy中没有结构化数组的二元运算符?

好的,所以在浏览了numpy结构化数组的教程后,我能够创建一些简单的例子:

from numpy import array, ones
names=['scalar', '1d-array', '2d-array']
formats=['float64', '(3,)float64', '(2,2)float64']
my_dtype = dict(names=names, formats=formats)
struct_array1 = ones(1, dtype=my_dtype)
struct_array2 = array([(42., [0., 1., 2.], [[5., 6.],[4., 3.]])], dtype=my_dtype)
Run Code Online (Sandbox Code Playgroud)

(我的预期用例将有三个以上的条目,并将使用非常长的1d阵列.)因此,一切顺利,直到我们尝试执行一些基本的数学运算.我得到以下所有错误:

struct_array1 + struct_array2
struct_array1 * struct_array2
1.0 + struct_array1
2.0 * struct_array2
Run Code Online (Sandbox Code Playgroud)

显然,即使是最简单的结构化数组也不支持简单的运算符(+, - ,*,/).或者我错过了什么?我是否应该看一些其他的包裹(并且不要说熊猫,因为它完全过度杀戮)?这似乎是一个显而易见的能力,所以我有点傻眼.但是很难在网上找到任何有关此问题的喋喋不休.这不会严重限制结构化数组的有用性吗?为什么有人会使用结构数组而不是数组打包到dict中?是否存在技术上的原因导致这种情况难以解决?或者,如果正确的解决方案是执行重载的艰巨工作,那么如何在保持操作快速的同时完成?

python numpy binary-operators structured-array

8
推荐指数
1
解决办法
530
查看次数

Numpy - 在引用单个元素时保留指针

我正在使用从python字典的值映射到像这样的numpy数组:

import numpy as np
my_array = np.array([0, 1, 2, 3, 4, 5, 6])
my_dict = {'group_a':my_array[0:3], 'group_b':my_array[3:]}
Run Code Online (Sandbox Code Playgroud)

这提供了通过dict引用的值,以反映在完整数组中所做的任何更改.我需要dict中的组的大小是灵活的.但是,当一个组只是一个元素时,例如:

my_dict2 = {'group_a':my_array[0], 'group_b':my_array[1:]}
Run Code Online (Sandbox Code Playgroud)

...然后numpy似乎返回元素值而不是指针.dict中的值不再反映数组中的任何更改.有没有办法澄清我想要指针甚至单个元素引用?

python arrays pointers numpy

4
推荐指数
1
解决办法
289
查看次数