numpy学习之ndarry随笔

Numpy几乎是Python 生态系统的数值计算的基石,例如Scipy,Pandas,Scikit-learn,Keras等出色的包都基于Numpy.
ndarry是numpy的核心数据结构,学好ndarry的相关操作是掌握numpy的前提条件。

import numpy as np

# 新建ndarry
data = np.random.randn(2,4)                 #生成2行4列的随机数组
data1 = np.array([[1,2,3,4],[5,6,7,8]])     #生成2行4列的整型数组
data_0 = np.zeros((3,6))                    #创建一个全0的3*6数组
data_0_like = np.zeros_like(data)           #创建一个和data数组形状一样的0数组
data_1 = np.ones((3,6))                     #创建一个全1的3*6数组
data_1_like = np.ones_like(data)            #创建一个和data数组形状一样的1数组
data_empty = np.empty((2,3,4))              #创建一个全为空的的2*3*4的数组  不靠谱,会有垃圾数据。
data_empty_like = np.empty_like(data)       #创建一个和data数组形状一样的空数组
data_full = np.full((3,3),8)                #创建一个指定维度和数值的数组
data_full_like = np.full_like(data_0,8,order='A')     #*创建一个和已有数组维度一样的,并给出填充值的数组,order含义不理解
int_1 = data_1.astype(np.int64)              #将float64类型的数组显性转换为int64的数据
data_eye = np.eye(5,M=6,k=-1)                #返回一个二维数组n*n,对角线值为1,其余为0,5为行数,M是列数,k为偏移量
# [[0. 0. 0. 0. 0. 0.]
#  [1. 0. 0. 0. 0. 0.]
#  [0. 1. 0. 0. 0. 0.]
#  [0. 0. 1. 0. 0. 0.]
#  [0. 0. 0. 1. 0. 0.]]
data_identity = np.identity(5)               #返回一个二维数组n*n,对角线值为1,其余为0,内部使用eye函数
data = data_eye.copy()                       #复制一份数据的copy,如果直接赋值,则代表指针引用

#打印区
data = data_eye
print(data)
print("我的数组维度是",data.ndim)
print("我的形状是",data.shape)
print("我的数据类型是:",data.dtype)

# 通过切片方式访问数组array
data = np.random.randn(3,3,3)*10
data[1][2][0:1] = 5                              #对于三维数组,可以通过切片方式直接进行赋值
# 神奇的布尔索引,如果bool值是false,则不选择该列,通过bool索引,可以对数组进行自由的切片
status = np.array(['good','bad','bad'])
print(data[status == 'good',status=='bad',1:2])
# 基于常识来设置数据也是可以的
data[ data<0 ] = 0                            #如果数据小于0,则将数据置为0
data[ (data>0) & (data<10)] = 5               #如果数据大于0小于10,则将数据置为5
# 神奇索引:使用整数数组来进行索引
arr = np.empty((8,4))
for i in range(8):
    arr[i] = i
print(arr[[4,3,0,6]])          #相当于选择第4,第3,第0和第6行的数据。
print(arr[[-1,-3,-6]])         #使用负的索引,则从尾部开始选择。
# 数组转置和换轴
arr = np.arange(32).reshape((8,4))    #reshape可以重新设置数组的维度
print(arr)
print(arr.T)                          #数组进行反转 ab反转为ba,xyz反转为zyx
# 计算矩阵内积:
arr = np.random.randn(6,3)
arr_product = np.dot(arr.T,arr)
print(arr_product)
# 使用transpose改变数据轴
arr = np.arange(16).reshape((2,2,4))
arr1 = arr.transpose((1,0,2))                 #原来的数组不变,返回一个新的数组。
print(arr1)
# 使用swapaxes改变数据轴
arr2 = arr.swapaxes(1,2)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值