当前位置: 首页 > 面试题库 >

将复杂的值分配给numpy数组?

陶福
2023-03-14
问题内容

这给出了预期的结果

x = random.rand(1) + random.rand(1)*1j
print x.dtype
print x, x.real, x.imag

这有效

C = zeros((2,2),dtype=complex)
C[0,0] = 1+1j
print C

但是如果我们将其更改为

C[0,0] = 1+1j + x

我收到“ TypeError:无法将复数转换为浮点数”。

如果现在我们省略显式的dtype = complex,我将得到“ ValueError:设置具有序列的数组元素”。

有人可以解释发生了什么,以及如何做到无误吗?我迷路了。


问题答案:

要插入complexxx + somethingin C,您显然需要将其视为数组,因此可以x将其索引或分配给的一个切片C

>>> C
array([[ 0.+0.j,  0.+0.j],
       [ 0.+0.j,  0.+0.j]])
>>> C[0, 0:1] = x
>>> C
array([[ 0.47229555+0.7957525j,  0.00000000+0.j       ],
       [ 0.00000000+0.j       ,  0.00000000+0.j       ]])
>>> C[1, 1] = x[0] + 1+1j
>>> C
array([[ 0.47229555+0.7957525j,  0.00000000+0.j       ],
       [ 0.00000000+0.j       ,  1.47229555+1.7957525j]])

看来NumPy无法正确处理这种情况。考虑提交错误报告。



 类似资料:
  • 问题内容: 说我有一个数组 np.zeros((4,2)) 我有一个值[4,3,2,1]的列表,我想分配给以下位置:[(0,0),(1,1),(2,1),(3,0) ] 如何不使用for循环或展平数组来做到这一点? 我可以使用花哨的索引来检索值,但不能分配它们。 ======更新========= 感谢@hpaulj,我意识到原始代码中的错误是。 当我使用zeros_like初始化数组时,它默认为

  • 我有一个numpy数组,一个定义数组中范围的开始/结束索引列表,以及一个值列表,其中值的数量与范围的数量相同。在循环中执行此赋值当前非常慢,因此我想以矢量化的方式将值赋给数组中的相应范围。这可能吗? 这是一个具体的简化示例: <代码>a=np。零([10]) 下面是定义a中范围的开始索引和结束索引列表,如下所示: 这是我想分配给每个范围的值列表: <代码>值=[1、2、3、4] 我有两个问题。首先

  • 问题内容: 如何使用NumPy编写以下MATLAB代码? 分配行似乎很容易,但是我找不到将数组分配给另一个数组的列的示例。 问题答案: 使用。您需要选择作为单个numpy数组的列。如果可以选择格式化的方式,最好不要首先使其成为二维数组,而要使其成为常规的(行)数组:

  • 问题内容: 在Go中,如何将函数调用返回的值分配给指针? 考虑下面的示例,注意返回一个值(不是指针): 这些都失败了: 是否确实需要局部变量?那不会招致不必要的复制吗? 问题答案: 根据规范,必须使用局部变量。 要获取值的地址,调用函数必须将返回值复制到可寻址的内存中。有副本,但这不是多余的。 Go程序通常使用值。 有时在应用程序想要区分无值和其他时间值的情况下使用A。在SQL NULL和有效时间

  • 问题内容: 我以前从未做过,也找不到答案。这可能不是用于此目的的正确数据类型,但是我只想分配一个int,然后将另一个没有in循环的int分配到2D数组中,值实际上是从另一个函数返回的,但是为了简单起见,只是使用in i和k,这就是我以为您会这样做的方式,但事实并非如此: TIA-如果我误选了错误的树,请随时向我指出一个更好的数据结构的方向。 问题答案: 最好的方法可能是一次声明并分配所有值。如图所

  • 问题内容: 为什么以下代码无法编译 但是以下确实可以编译 在这两种情况下,我不只是将整数值分配给char吗? 问题答案: 可以将A 分配给不带强制转换的,因为这是扩大的转换。反之,将a 转换为a 需要转换,因为这是缩小的转换。 另请参见JLS。第5章。转换和升级。