numpy

1、属性

import numpy as np

array = np.array([[1,2,3],
                  [4,5,6],
                  [7,8,9]])
print(array)
print(array.ndim)#维度
print(array.shape)#形状
print(array.size)#大小
print(array.dtype)#元素属性

2、创建方法

import numpy as np
#给它个类型
a=np.array([1,2,3],dtype=np.int32)
print(a.dtype)

b=np.array([1,2,3],dtype=np.float)
print(b.dtype)

c=np.array([1,2,3])#一维数组
print(c)

d = np.array([[1,2,3],
              [4,5,6],
              ])#二维矩阵
print(d)

zero=np.zeros((2,3))#生成两行三列全为0的矩阵
print(zero)

one = np.ones((3,4))#生成3行4列的全为1 的矩阵
print(one)

empty = np.empty((3,2))#生成3行2列全都接近于0但不等于0
print(empty)

e = np.arange(10)
print(e)

f=np.arange(4,12)
print(f)

#从1开始,中间间隔3,到20结束
g=np.arange(1,20,3)
print(g)

h = np.arange(8).reshape(2,4)
print(h)

3、矩阵运算

import numpy as np

arr1 = np.array([[1,2,3],
                  [4,5,6]])
arr2 = np.array([[1,1,2],
                  [2,3,3]])
print(arr1+arr2)#矩阵加法
print(arr1-arr2)

print(arr1*arr2)#按位乘

print(arr1**arr2)#按位幂
print(arr1/arr2)
print(arr1%arr2)
print(arr1//arr2)

print(arr1+2)#所有元素加2
print(arr1*10)

arr3 = arr1 >3#判断哪些数大于3,大于为true,小于false
print(arr3)

arr4 = np.ones((3,5))
print(arr4)

np.dot(arr1,arr4)#矩阵乘
arr1.dot(arr4)

print(arr1)
print(arr1.T)#转置矩阵
print(np.transpose(arr1))

4、随机数的生成和其他运算

import numpy as np

#生成3行2列,从0到1的随机数
sample1=np.random((3,2))
print(sample1)

#生成3行2列标准正态函数的随机数
sample2=np.random.normal(size=(3,2))
print(sample2)

#生成3行2列从0到10的整数
sample3 = np.random.randint(0,10,size=(3,2))

np.sum(sample1)#q求所有元素和
np.min(sample1)#求最小值
np.max(sample1)#求最大值

np.sum(sample1,axis=0)#对列求和
np.sum(sample1,axis=1)#对行求和
np.argmin(sample1)#求所有元素最小值的索引
np.argmax(sample1)#最大值索引

print(np.mean(sample1))#求所有元素的平均值‘
print(sample1.mean())#同上

np.median(sample1)#求中位数
np.sqrt(sample1)#开方的结果

sample4 = np.random.randint(0,10,size=(1,10))
print(sample4)
np.sort(sample1)#对每一行进行从小到大的排序

np.clip(sample4,2,7)#里面元素小于2变为2,大于7变为7

5、numpy的索引

import numpy as np
arr1 = np.arange(2,14)
print(arr1)
print(arr1[2])#提取2号索引,即第三个位置的数据

print(arr1[1:4])#第一道第四个位置的数据
print(arr1[2:-1])#从第2到倒数第一个位置
print(arr1[:5])#前五个数据
print(arr1[-2:])#最后两个数据

arr2=arr1.reshape(3,4)#把arr1转换为3行4列的二维数组

print(arr2[1])
print(arr2[1][1])
print(arr2[1,2])

print(arr2[:,2])#所有的行里的第二列

#迭代每一行
for i in arr2 :
    print(i)
#迭代每一列,使用转置
for i in arr2.T :
    print(i)
#一个一个元素的迭代
for i in  arr2.flat :
    print(i)

6、array合并

import numpy as np

arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
#把两个数组合并,变成了2维数组
arr3=np.vstack((arr1,arr2))
print(arr3)
print(arr3.shape)

#水平的合并成一维的数组
arr4 = np.hstack((arr1,arr2))
print(arr4)
print(arr4.shape)

#多个array的合并
arrv = np.vstack((arr1,arr2,arr3))
print(arrv)

arrh=np.hstack((arr1,arr2,arr4))

arr=np.concatenate((arr1,arr2,arr1))
print(arr)

#axis=0代表纵向的合并,维度要相同,形状要匹配
arr=np.concatenate((arr3,arrv),axis=0)
print(arr)
#axis=1代表纵向的横向
arr=np.concatenate((arr3,arrv),axis=1)
print(arr)

print(arr1.T)#一维的无法转置

#给他新增一个维度[[1,2,3]]
arr1_1=arr1[np.newaxis,:]
print(arr1_1)
print(arr1_1.shape)
print(arr1_1.T)#这样就可以转置了

#这样会变成三行1列的数据,竖着的1,2,3
arr1_2=arr1[:,np.newaxis]
print(arr1_2)
print(arr1_2.shape)

#如果arr1是一维的数据,那自动变为二维数据,如果大于等于2 则不变
arr1_3=np.atleast_2d(arr1)

7、array的分割
这里的垂直和水平分割有一点超出我的认知。垂直是横着切,水平是竖着切。

import numpy as np
arr1 = np.arange(12).reshape((3,4))
print(arr1)

#水平方向的分割 分成两个部分
arr2,arr3=np.split(arr1,2,axis=1)
print(arr2)
print(arr3)

#垂直方向分割,分成三份
arr4,arr5,arr6 = np.split(arr1,3,axis=0)
print(arr4)
print(arr5)
print(arr6)

#水平方向分割,分割成三部分,但因为无法等分为三部分,所以是不等分的
arr7,arr8,arr9=np.array_split(arr1,3,axis=1)
print(arr7)
print(arr8)
print(arr9)

#垂直分割
arrv1,arrv2,arrv3=np.vsplit(arr1,3)
print(arrv1)
print(arrv2)
print(arrv3)

#水平分割
arrh1,arrh2=np.hsplit(arr1,2)
print(arrh1)
print(arrh2)

8、numpy的浅拷贝和深拷贝

import numpy as np

arr1=np.array([1,2,3])
#他们是同一块内存,地址是相同的
#这样的拷贝是浅拷贝
arr2=arr1
arr2[0]=5
print(arr1)
print(arr2)

#从新开辟一块内存,深拷贝
arr3 = arr1.copy()
arr3[0]=10
print(arr1)
print(arr3)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值