zoukankan      html  css  js  c++  java
  • python 两个numpy矩阵维度相同,相减却报错了???

    报如下错误:
    TypeError: ufunc did not contain a loop with signature matching types dtype('U32')
     
    首先我在想会不会是这两个矩阵的元素类型不同,不允许相加减呀?但是明明浮点数和整数是可以相加减的。
     
    然后上网搜了搜,原来如此,是因为这两个矩阵的dtype不同,可能一个是float64,一个是|S32,在numpy里,当数组或矩阵的dtype不相同时,是不允许相加减的,会报上面的错误,所以只需像y = y.astype('float64')这样转换类型就好,注意y.astype('float64')是没有用的,本质y的dtype是没有改变的,你需要重现将y指向y.astype('float64')内容才行;
     
     1 import numpy as np
     2  
     3 x = np.array([1, 2, 2.5])
     4 print(x.dtype)
     5 x.astype(int)
     6 print(x.dtype)
     7  
     8 y = np.array([3, 6, 2], dtype='S32')
     9 print(y.dtype)
    10 y = y.astype('float64')
    11 print(y.dtype)
    12 print(x-y)
    13 
    14 结果:
    15 float64
    16 float64
    17 |S32
    18 float64
    19 [-2.  -4.   0.5]

     
  • 相关阅读:
    IP寻址方式三
    IP通信基础4
    IP通信基础3
    IP通信基础2
    IP通信基础 1
    IP通信基础
    IP通信原理第二周
    设备选型
    常用virsh命令记录
    [转]enable spice html5 console access in openstack kilo(centos)
  • 原文地址:https://www.cnblogs.com/Susie2world/p/12853743.html
Copyright © 2011-2022 走看看