这篇log是记录numpy,旨在为快速上手ml做准备,不需要花太多时间,以后可以边查API边做数据之类的工作 ㄟ(▔,▔)ㄏ
-
首先当然是导入numpy啦 这步不会的请去学完了python基础再过来。。哼!!
-
import之后可以先运行试一下有没有问题,没问题的话就可以继续下一步了
-
安装numpy(装了conda的同学可以用conda命令装,没装conda的可以用pip装,下面两种任选其一即可)
$ pip install numpy $ conda install numpy
-
如何知道自己是否装了conda?
- mac打开终端,windows打开cmd统一输入conda之后敲回车
- 然后你们自己就能看出来啦( ̄▽ ̄)~*
进入正题
import numpy as np
array = [1, 2, 3, 4, 5] # define a list
array + 1 # let every element add 1
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-1-4ae5e6a2eab2> in <module>
1 array = [1, 2, 3, 4, 5] # define a list
----> 2 array + 1
TypeError: can only concatenate list (not "int") to list
- 不可以使用list对数字随便进行加减
- 日后做矩阵计算或需要定义“向量(vector)”需要使用numpy定义成numpy.ndarray结构
ndarray是啥?
print([1, 2, 3, 4, 5])
array = np.array([1, 2, 3, 4, 5]) # 将一个list装入np.array()中,并赋值给array
print(type(array)) # output the type of array
print(array)
[1, 2, 3, 4, 5]
<class 'numpy.ndarray'>
[1 2 3 4 5]
可以看到输出的array类型是numpy.ndarray的对象,输出的值与list的区别就是少了逗号,实际上这步的操作就是把list转换成array数组
那ndarray中是否有一些操作能够方便我们实现对数据的运算呢
继续看一下上面的给list加1操作
added_array = array + 1
print(added_array)
[2 3 4 5 6]
可以说明ndarray这个数据类型可以对向量进行加减乘除操作,会对数组内的每一个元素都执行同样的加1操作
array数组之间是否可以进行相加?
- array之间必须是相同的shape值(shape有点类似于线性代数里面行和列的概念,而两个array必须是同型矩阵。。。可以这么理解,但是ndarray只是数组不是矩阵)
added_array + array
array([ 3, 5, 7, 9, 11])
print(array[0], array[1]) # ndarray与数组的取索引操作相同
1 2
下面这个操作就是取array的shape值,表示array这个数组的形状(几行?几列?)
array.shape
(5,)
list_shape = [1, 2, 3, 4, 5] #定义一个list
list_shape.shape
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-14-17b93718099f> in <module>
1 list_shape = [1, 2, 3, 4, 5] #定义一个list
----> 2 list_shape.shape
AttributeError: 'list' object has no attribute 'shape'
可以看到,list数据类型是不能调用shape操作的
现在来看一下二维的ndarray是什么样子的
np.array([[1, 2, 3], [4, 5, 6]])
array([[1, 2, 3],
[4, 5, 6]])
可以看出,输出的是一个二维数组,请注意,这并不是矩阵,用ndarray进行矩阵运算得出来的结果并不是正确的
np.array([[1, 2, 3], [4, 5, 6]]).shape
(2, 3)
所以我们可以看到这个数组是一个两行三列的二维数组
2020年7月22日更新