写代码时遇到的一些错误,Mark一下

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiongchengluo1129/article/details/80695449
今天在写算法的时候出现了几个错误:

一、

TypeError: ufunc 'multiply' did not contain a loop with signature matching types 
dtype('<U32') dtype('<U32') dtype('<U32')

 U32就是 长度为32个字节的无符号整数类型,这下就好办了,发现问题是出在读取txt数据时没有转换类型,依旧保持着整数类型。需要转化为浮点数类型。float()一下就好了


二、push,提示:

push to origin/master war rejected"

解决方法:
1.切换到自己项目所在的目录,右键选择GIT BASH Here

2.在terminl窗口中依次输入命令:

git pull

git pull origin master

git pull origin master –allow-unrelated-histories

3.在idea中重新push自己的项目,成功!!!


三、用numpy数组实现矩阵乘法的时候,出现错误

通过仔细的对比发现:

  1. python自带的 * 、/、+、- 都是逐个元素进行运算的

  2. 如果要用* 实现矩阵相乘,就需要将list或者numpy数组转化为mat。 mat1*mat2就是矩阵相乘了。当然,事先要保证矩阵的维度符合矩阵乘法的规则,必要的时候要用transpose()。尤其是在对label进行运算的时候

  3. 可以用 np.multiply(a1,a2) 实现矩阵的逐个元素相乘。np.matmul实现的是矩阵相乘
  4. numpy中有很多辅助函数。

列举numpy中矩阵运算的函数

np.multiply()函数
函数作用:数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致。相乘矩阵大小要一样。

星号(*)乘法运算
作用:
对数组执行对应位置相乘
对矩阵执行矩阵乘法运算

np.dot()函数
函数作用:
对于秩为1的数组,执行对应位置相乘,然后再相加;
对于秩不为1的二维数组,执行矩阵乘法运算;超过二维的可以参考numpy库介绍


四、

dataIndex=list(range(nSamples))
del(dataIndex[index])
TypeError: 'range' object doesn't support item deletion

出错原因:

del()用于list列表操作,删除一个或者连续几个元素。

>>> a = [-1, 3, 'aa', 85] # 定义一个list
>>> a
[-1, 3, 'aa', 85]
>>> del a[0]      # 删除第0个元素
>>> a
[3, 'aa', 85]
>>> del a[2:4]   # 删除从第2-3个元素。
>>> a
[3, 'aa']
>>> del a       # 删除整个list
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

numpy.delete()适用于numpy ndarray数组。但是numpy数组不支持删除数组元素,numpy.delete() 返回删除了某些元素的新数组。

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
index = [2, 3, 6]

new_a = np.delete(a, index)

print(new_a)        #Prints `[1, 2, 5, 6, 8, 9]`

写完啦,上厕所去!

猜你喜欢

转载自blog.csdn.net/xiongchengluo1129/article/details/80695449