Numpy是Python处理数据的一个科学计算库,这里的代码我都是在anaconda的Jupyter Notebook上运行的,这是个交互式平台可以立马看到结果(很方便),当然也可以在pycharm上运行,如果没有安装运行的环境的可以参考以下博文
http://blog.youkuaiyun.com/a_hui_tai_lang/article/details/78689559
废话少说,一切尽在代码之中
代码已经上传到我的GitHub,https://github.com/LoyalWilliams/machinelearning
# coding: utf-8
# In[3]:
import numpy
# In[4]:
#用numpy读取文件,按逗号分隔
world_alcohol=numpy.genfromtxt("t.txt",delimiter=",",dtype=str)
print(type(world_alcohol))
"""
结果:
<class 'numpy.ndarray'>
"""
# In[5]:
world_alcohol
# In[6]:
# 可以查看帮助文档
print (help(numpy.genfromtxt))
# In[7]:
# 生成一个一维向量
vector=numpy.array([5,10,15,20])
"""
结果:
[ 5 10 15 20]
"""
# In[8]:
# 生成一个二维矩阵
matrix=numpy.array([[5,10,15],[20,25 ,30],[35,40,45]])
"""
结果:
[[ 5 10 15]
[20 25 30]
[35 40 45]]
"""
# In[9]:
print(vector)
# In[10]:
print(matrix)
# In[11]:
# shap函数:维度
print(vector.shape)
"""
结果:
(4,)
表示1*4或4*1的向量
"""
# In[12]:
print(matrix.shape)
"""
结果:
(3,3)
表示3*3的矩阵
"""
# In[13]:
# 注意以下的数据会发生类型的自动转换
numbers=numpy.array(['1',2,3,4])
# In[14]:
print(numbers)
numbers.dtype
"""
['1' '2' '3' '4']
dtype('<U1')
"""
# In[15]:
world_alcohol
# In[16]:
# 使用切片取数据,取第二列的数据
print(matrix[:,1])
"""
结果:
[10 25 40]
"""
# In[17]:
matrix
"""
array([[ 5, 10, 15],
[20, 25, 30],
[35, 40, 45]])
"""
# In[18]:
# 取第二三行,一二列的数据
print(matrix[1:3,0:2])
"""
[[20 25]
[35 40]]
"""
# In[19]:
vector
"""
array([ 5, 10, 15, 20])
"""
# In[20]:
# 查看是否含有数值10,结果为一个布尔值的矩阵
vector==10
"""
array([False, True, False, False], dtype=bool)
"""
# In[21]:
a=vector==10
# In[22]:
a
# In[23]:
vector
"""
array([ 5, 10, 15, 20])
"""
# In[24]:
# 查看向量中是否含有5或10
equal_to_ten_or_five=(vector==10)|(vector==5)
print(equal_to_ten_or_five)
"""
[ True True False False]
"""
# In[25]:
# 把等于5或者10的数据重新赋值为50
vector[equal_to_ten_or_five]=50
# In[45]:
vector
"""
array([50, 50, 15, 20])
"""
# In[46]:
print(vector)
"""
[50, 50, 15, 20]
"""
# In[47]:
matrix
"""
array([[ 5, 10, 15],
[20, 25, 30],
[35, 40, 45]])
"""
# In[48]:
# 对矩阵也是类似的操作
second_column_25=matrix[:,1]==25
# In[49]:
second_column_25
# In[50]:
# 把第二列等于25的数据赋值为10
matrix[second_column_25,1]=10
# In[51]:
print(matrix)
"""
[[ 5 10 15]
[20 10 30]
[35 40 45]]
"""
# In[52]:
vector=numpy.array(["1","2","3"])
# In[53]:
print(vector.dtype)
"""
<U1
"""
# In[54]:
print(vector)
"""
['1' '2' '3']
"""
# In[55]:
# 类型转换
vector=vector.astype(float)
# In[56]:
print(vector)
"""
[ 1. 2. 3.]
"""
# In[57]:
print(vector.dtype)
"""
float64
"""
#一些常用的数学函数,最大值、最小值、平均值
# In[58]:
# 最小值
vector.min()
"""
1.0
"""
# In[59]:
# 最大值
vector.max()
"""
3.0
"""
# In[60]:
# 平均值
vector.mean()
"""
2.0
"""
# In[61]:
matrix=numpy.array([
[5,10,15],
[20,25,30],
[35,40,45]
])
# In[62]:
# axis=1表示对行操作,axis=0表示对列操作
# 对每一列求和
matrix.sum(axis=1)
"""
array([ 30, 75, 120])
"""
# In[63]:
# 对每一行求和
matrix.sum(axis=0)
"""
array([60, 75, 90])
"""
# In[64]:
# 自动生成向量函数
numpy.arange(15)
"""
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
"""
# In[67]:
range(15)==numpy.arange(15)
"""
Python自带的函数和numpy的函数对比
array([ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True], dtype=bool)
"""
# In[68]:
print(numpy.arange(15))
"""
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
"""
# In[69]:
a=numpy.arange(15)
# In[72]:
# 改变矩阵的维度
a=a.reshape(3,5)
# In[73]:
a.shape
# In[74]:
a.dtype.name
"""
'int32'
"""
# In[75]:
# 查看矩阵a的维度
a.ndim
"""
2
"""
# In[76]:
a.size
"""
15
"""
# In[77]:
# 生成0矩阵
numpy.zeros((3,4))
# In[78]:
numpy.zeros((3,4)).ndim
"""
2
"""
# In[79]:
numpy.ones((2,3,4))
"""
array([[[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]],
[[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]]])
"""
# In[80]:
# 10到30,步长为5的数据
numpy.arange(10,30,5)
"""
array([10, 15, 20, 25])
"""
# In[81]:
a=numpy.arange(12)
# In[82]:
# 改变矩阵的维度
a.reshape(4,3)
# In[83]:
# 随机函数
numpy.random.random((2,3))
# In[84]:
from numpy import pi
# In[85]:
# 0到2*pi,平均成100份的数据
numpy.linspace(0,2*pi,100)
# In[86]:
numpy.linspace(0,2*pi,10)
# In[87]:
a=numpy.array([20,30,40,50])
# In[88]:
b=numpy.arange(4)
# In[89]:
print(a)
"""
[20 30 40 50]
"""
# In[90]:
print(b)
"""
[0 1 2 3]
"""
# In[91]:
c=range(4)
# 矩阵/向量的加减乘除
# In[92]:
a-b
"""
array([20, 29, 38, 47])
"""
# In[93]:
a-c
"""
array([20, 29, 38, 47])
"""
# In[94]:
a+c
"""
array([20, 31, 42, 53])
"""
# In[95]:
# 对应位置相乘
a*c
"""
array([ 0, 30, 80, 150])
"""
# In[97]:
a.size
# In[98]:
a
# In[99]:
# 每个数据平方
a**2
"""
array([ 400, 900, 1600, 2500], dtype=int32)
"""
# In[100]:
# 每个数据立方
a**3
"""
array([ 8000, 27000, 64000, 125000], dtype=int32)
"""
# In[101]:
a=numpy.floor(10*numpy.random.random((3,4)))
# In[102]:
print(a)
# In[104]:
# 把数据平摊的一维向量
print(a.ravel())
"""
[ 5. 2. 0. 5. 7. 6. 4. 3. 6. 1. 2. 4.]
"""
# In[105]:
a
# In[106]:
a.T
# In[111]:
# 注意shape和reshape的区别
a.shape=(1,12)
# In[112]:
a
"""
array([[ 5., 2., 0., 5., 7., 6., 4., 3., 6., 1., 2., 4.]])
"""
# In[113]:
a.shape=(6,2)
# In[114]:
a
"""
array([[ 5., 2.],
[ 0., 5.],
[ 7., 6.],
[ 4., 3.],
[ 6., 1.],
[ 2., 4.]])
"""
# In[118]:
# -1表示自己不写列数,让计算机自动识别列数
a.reshape(2,-1)
"""
array([[ 5., 2., 0., 5., 7., 6.],
[ 4., 3., 6., 1., 2., 4.]])
"""
# In[119]:
a
"""
array([[ 5., 2.],
[ 0., 5.],
[ 7., 6.],
[ 4., 3.],
[ 6., 1.],
[ 2., 4.]])
"""
# In[122]:
# 矩阵切分vstack和hstack函数
numpy.vstack((a,a))
# In[123]:
a=numpy.floor(10*numpy.random.random((2,12)))
# In[124]:
print(a)
# In[125]:
print(numpy.hsplit(a,3))
# In[126]:
a
# In[128]:
print(numpy.hsplit(a,(3,4)))
# In[129]:
b=a
# In[130]:
print(a is b)
"""
True
"""
# In[133]:
b=a.view()
# In[134]:
print(a is b)
# In[135]:
import numpy as np
# In[140]:
#求矩阵的每列的最大值
data=np.sin(np.arange(20).reshape(5,4))
# In[141]:
print (data)
# In[142]:
# 返回每列最大值所在的索引
ind=data.argmax(axis=0)
# In[143]:
print(ind)
# In[144]:
data_max=data[ind,range(data.shape[1])]
print(data_max)
# In[146]:
# tile函数
a=np.arange(0,40,10)
print(a)
b=np.tile(a,(4,3))
print(b)
"""
[ 0 10 20 30]
[[ 0 10 20 30 0 10 20 30 0 10 20 30]
[ 0 10 20 30 0 10 20 30 0 10 20 30]
[ 0 10 20 30 0 10 20 30 0 10 20 30]
[ 0 10 20 30 0 10 20 30 0 10 20 30]]
"""
# In[147]:
a=np.array([[4,3,5],[1,2,1]])
print(a)
# In[148]:
# 排序,每行数据从小到大排
b=np.sort(a,axis=1)
print(b)
"""
[[4 3 5]
[1 2 1]]
"""
# In[149]:
a.sort(axis=1)
print(a)
"""
[[4 3 5]
[1 2 1]]
"""
# In[150]:
a=np.array([4,3,1,2])
j=np.argsort(a)
print(j)
print("------")
print(a[j])
"""
[2 3 1 0]
------
[1 2 3 4]
"""
我的GitHub
QQ:2541692705
邮箱:loyalwilliams@163.com
微信扫一扫关注我,没事可以玩玩小游戏
我想去流浪,我想去读书,若有机会,江湖再见
扫一扫,领取红包,就当奖励你我付出的努力