8/27 Python.Numpy.01

借到了本相当合心的《Python编程 从数据分析到机器学习实战》


目录

 01 建立数组


 01 建立数组

from time import perf_counter
from turtle import pen
#不知道怎么跳出来的
import numpy as np
# 用np调用函数,返回数组,可用列表/元组建立一至多维数组

ar=np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
print(ar)
# [[[1 2]
#   [3 4]]
# 
#  [[5 6]
#   [7 8]]]

a=np.array([1,2,3,4])
b=a+1
print(a*b) #[ 2  6 12 20]


'''数组建立方法'''
print(np.arange(1,7,2)) # 指定步长 [1 3 5]
print(np.linspace(1,7,5)) # 指定元素个数,步长均匀 [1.  2.5 4.  5.5 7. ]
print(np.logspace(2,3,4)) # 指定元素个数,步长对数刻度上均匀 [ 100.          215.443469    464.15888336 1000.        ]
# 默认参数base=10.0 为对数底数

print(np.zeros((2,2))+np.ones((2,2))) # 返回全是 0 1
# [[1. 1.]
#  [1. 1.]]
print(np.empty((2,3))) # 返回随机
# [[3.78290736e-307 9.34587381e-307 1.60219035e-306]
#  [8.90070286e-308 1.37962117e-306 2.00272265e-307]]
print(np.full((2,2),'!')) # 返回指定填充

print(np.eye(3,4,1)+np.eye(3,4,-1)) # 第二个参数默认等于第一个,第三个参数对角线位置,正/负表示上/下对角线
# [[0. 1. 0. 0.]
#  [1. 0. 1. 0.]
#  [0. 1. 0. 1.]]

print(np.repeat((1,2,3),3)) # 每个元素重复n遍
# [1 1 1 2 2 2 3 3 3]


'''数组属性使用'''
print(ar.ndim,ar.shape,ar.size,ar.dtype,ar.itemsize)
# 维数 形状大小 元素个数 元素类型 元素字节大小
# 3 (2, 2, 2) 8 int32 4


'''数组方法使用'''
print(ar.reshape(2,4),ar) # 原数组不改变
ar.shape=2,4 # 或直接更改属性
print(ar) 

print(np.array([False,1]).all()) # 返回是否全非0
print(np.alltrue(np.array([False,1]))) #等价

# 默认参数axis=0 为维度方向,向里一个括号表示降一维

print(ar.any(axis=1)) # 返回是否有非0 [ True  True]
print(ar.reshape(4,2).any(axis=1)) # [ True  True  True  True]

print(id(ar),id(ar.copy())) # 复制!=赋值,地址不同

print(a.astype(float)) # 改变元素类型
#若 a.dtype=float
# print(a) [4.24399158e-314 8.48798317e-314]


'''数组对接、分割'''
print((a,b)) # (array([1, 2, 3, 4]), array([2, 3, 4, 5]))
print([a,b]) # [array([1, 2, 3, 4]), array([2, 3, 4, 5])]
print(np.vstack((a,b))) # 垂直vertical对接
# [[1 2 3 4]
#  [2 3 4 5]]
print(np.hstack((a,b))) # 水平horizontal对接
# [1 2 3 4 2 3 4 5]

print(np.vsplit(ar,2)) # 垂直分割
# [array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])]
print(np.hsplit(ar,2)) # 水平分割
# [array([[1, 2],
#        [5, 6]]), array([[3, 4],
#        [7, 8]])]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无名乙醛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值