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]

     
  • 相关阅读:
    AVPlayer中的问题
    封装网络请求
    FMDB的使用方法
    设置UITextField占位符的颜色和字体
    SQL SERVER性能优化综述
    关于学习
    学习java中对《类与对象》的认知
    Felling1-java
    关于学习JAVA第二章的心得
    学习JAVA第一章的心得
  • 原文地址:https://www.cnblogs.com/Susie2world/p/12853743.html
Copyright © 2011-2022 走看看