numpy的学习,全是源码,勿喷

numpy的学习,全是源码,勿喷

在这里插入图片描述

基础学习

import numpy as np

# # 核心:数组   数组里面只能存放列表!!!
# a = np.zeros((3,2))# 创建一个全是0数组
# # 表示 3个数列,每个数列2个数据
# # 表示   0 0
# #       0  0
# #       0  0
# print(a)
# print(a.shape)# 获取数组的规模
#
# # numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
# #           创建的数组 可以进入的类型
#
#
# a = np.ones((3,2))# 全是一的数组
# print(a)
# a = np.arange(3,7)# 类似range左边可取,右边不行
# print(a)
# b = np.linspace(3,6,2)
## 开头是3,结尾是6,最后的数字表示总共取多少个数字(包括开头和结尾)
# print(b)

array = np.array([[1, 2, 3],
                  [4, 5, 6]])
# 规格用(),具体数字用[],and具体数据要在里面加上一层!!
print(array)
print(array.ndim)  # 知道他是多少维的东西!!

a = np.array([2, 23, 4], dtype=np.int0)
# type代表的是数据的存储的格式,后面的数字越大,那么他的大小越大,所以也就越精确
print(a)


a = np.arange(1,13).reshape(3,4)# reshape代表是多少航多少列
print('arange',a)

b = np.linspace(3,6,3).reshape(3,1)#3个数列,每个数列1个数据
# 开头是3,结尾是6,最后的数字表示总共取多少个数字(包括开头和结尾)
# 是平均分的
print('linspace',b)
# arrange 和 Linspace的区别最后的参数arrange是间隔,
# Linspace是取多少个数,但是要注意,这些数字是包括头和尾

array的操作

import numpy as np
a = np.array([1,1,1])
b = np.array([2,2,2])
c = np.vstack((a,b))# 上下叠加,创造二维数列
d = np.hstack((a,b))# 左右叠加,合并成一个数列,h好

# 第一个括号代表这个函数,第二个括号代表进来的那两个要合并
print(c)
print(c.shape)
print(d)

# [1,1,1]
# 怎么变成[1]
#        [1]
#        [1]
# a.T 不行。。。

print(a[:,np.newaxis])
# 创建出一个新的维度

a = a[:,np.newaxis] #111变成 1  \n  1\n  1
b = b[:,np.newaxis]
print(np.hstack((a,b,b)))


c = np.concatenate((a,b),axis=0)# 0--上下  1---列表一排左右合并
print(c)


a = np.arange(1,13).reshape((3,4))# 记得加括号,因为3和4是一起的
print(a)
print(np.split(a,2,axis=1))
# 分成          2部分  列表内进行分割,就是左右嘛,上面有
# 左右的中间切开

a = np.arange(1,13).reshape((4,3))# 记得加括号,因为3和4是一起的
print(a)
# print(np.split(a,2,axis=0))# 上下分割
# 上下的中间切开
# 这种方法数据必须是可以平均分配的

# 和上面的split一样,但是v代表上下,,h代表左右,上面有写
# print(np.vsplit(a,2))
# print(np.hsplit(a,3))


# 下面这种就不大需要
# print(np.array_split(a,3,axis=0))
# 不平均分配


numpy的运算

import numpy as np
# a = np.array([20,30,40,50])
# b = np.arange(4)# 0 1 2 3
# print(a,b)
#
# print('a+b:',a+b)
# print('a*2:',a*2)
# print('a的平方:',a**2)# easy,right?
# print('np.sin,就是求a里面每一个的sin值:',np.sin(a))
# # cos tan类似,但是记得加上   np....
# b = np.arange(4).reshape(2,2)
# print(b<2)# 返回一个列表,符合值<2就是true

a = np.arange(1,10).reshape(3,3)
b = np.arange(9,0,-1).reshape(3,3)
print(a,'\n',b)

# c_dot = np.dot(a,b)
# 等同于下面那个
# c_dot = a.dot(b)
# print(c_dot)  矩阵运算不过多赘叙

# sum,max,min这些也不过多赘叙
# 但是记得加上  np!!!!

print(np.sum(a,axis=0))# 每个列表的第n个
print(np.sum(a,axis=1))# 每个列表
print(np.max(a,axis=0))# 同理



print(np.argmin(b))
# 最小值的索引,只会返回一个数字,那个就是按着顺序数下去

print(np.mean(a))
# 当然有另一种形式,a.mean()
# 平均值!!
print(np.median(a))
# 中位数

print(np.cumsum(a))
# 前缀和!!!
print(np.diff(a))
# 后一个数-前一个数,重复n次

print(np.nonzero(a))
# 打印全部非0的数字的索引,但是索引的行列,是分开的!!
print(np.sort(b))
# 进行排序,但是是一个一个列表进行排序。。

print(np.transpose(a))
# 行变成列,列变成行
# 另一种形式:a.T

print(np.clip(a,3,6))
# 表示,全部小于3的数字变成3
# 大于6的全部变成6

# a是二维的,因为一维的就是列表。。
print(a[2])
# 只有一个的时候,表示的是哪一个列表

print(a[2][1])# 第3个列表的第二个数据
# print(a[2,1]) teh same
print(a[2,:])
# 第二行所有数,所以有什么用捏
# 我们可以去第一列的第一个
print(a[:,0])# bingo

print(a.flatten())# 将全部数据都放到了一行当中

for i in a:
    print(i)# 可知for出来的是一个个列表

numpy的运算

import numpy as np
a = np.arange(1,5)
print(a)
# 没什么精彩的,就是a = b ,改变b的时候,a也改变了
# 因为这只是赋值,b只是a的一个名牌而已
# b就是a
b = a
b[0] = 14# 因为是一维,直接想列表一样
print(a)
a = np.arange(1,5)


# 所以用到copy。。
b = a.copy()
b [0] =666
print(a)
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值