python-数据思维

本文介绍了使用Python进行数据处理的基础知识,包括numpy数组创建、访问元素、基本运算,以及pandas数据分析库的使用。此外,还详细讲解了matplotlib绘图,包括线图、直方图、饼图和子图的绘制,以及PIL库中处理和显示图像的方法。
摘要由CSDN通过智能技术生成

创建ndarray数组

  • array函数接受一切序列型的对象( 例如列表),并产生一个新的含有传入数据的numPy数组。
import numpy as np

data1 = [6, 7.5, 8, 0, 1]
arr1 = np.array(data1)
print(arr1)
[6.  7.5 8.  0.  1. ]
  • 可创建多维数组
  • shape指出数组的形状,shape是个元组
  • ndim指出数组的维度
  • dtype指出数组中的元素的类型
import numpy as np

data1 = [[6, 7.5, 8, 0, 1], [3.2, 3, 7, 52, 23.4]]
arr1 = np.array(data1)
print(arr1.shape, arr1.ndim, arr1.dtype)
(2, 5) 2 float64
  • reshape函数可以改变数组的维度
  • astype 函数可生成一个新的数组,并指定新的dtype
import numpy as np
arr1=np.array([1,2,3,4,5,6])
arr1=arr1.reshape(2,3)
print(arr1)
[[1 2 3]
 [4 5 6]]
  • zeros 和 ones 函数 可以 创建 指定 长度 或 形状 的 全 0 或 全 1 数组
from numpy import array
array([0.,0.,0.,0.,0.])
array([0., 0., 0., 0., 0.])
np.ones(6)
array([1., 1., 1., 1., 1., 1.])

创建初始值为0,终值为1,步长为0.1的等差数组

np.arange(0,1,0.1)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

创建初始值为0,终值为1,元素个数为10的等差数组

np.linspace(0,1,10)
array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,
       0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.        ])

创建从100到102,共5个元素的等比数列

np.logspace(0,2,5)
array([  1.        ,   3.16227766,  10.        ,  31.6227766 ,
       100.        ])

numpy.random.rand(d0, d1, …, dn):生成一个[0,1)之间的随机浮点数或N维浮点数组。

生成2行3列的随机数数组,值在[0,1)之间

np.random.rand(2, 3)
array([[0.95037869, 0.973173  , 0.98286249],
       [0.69060825, 0.96183338, 0.75928584]])

numpy.random.randn(d0, d1, …, dn):生成一个浮点数或N维浮点数组,取数范围:正态分布的随机样本数。

生成2行3列的随机数数组,值为正态分布的随机样本数

np.random.randn(2, 3)
array([[ 0.66686711, -0.27895588, -2.02200514],
       [ 1.09895485, -2.01676474, -0.48062357]])

numpy.random.randint(low, high=None, size=None, dtype=‘l’):生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

生成包含10个元素的值在[0,100) 的数组

np.random.randint(0, 100, 10)
array([55, 28, 53, 59, 27, 71, 17,  5, 21, 92])

生成2*3维的值在[0,100) 的数组

np.random.randint(0, 100, (2,3))

array([[65, 37, 72],
       [26, 70, 38]])
  • normal():正态分布,前两个参数分别为期望值和标准差。
  • uniform():均匀分布,前两个参数分别为区间的起始值和终值。
  • poisson():泊松分布,第一个参数指定λ系数,它表示单位时间(或单位面积)内随机事件的平均发生率。输一个整数数组。
r1 = np.random.normal(100, 10, (4, 3)) 
r2 = np.random.uniform(10, 20, (4, 3)) 
r3 = np.random.poisson(2.0, (4, 3))
print(r1)
print(r2)
print(r3)
[[119.49006926  99.6777342   96.15609946]
 [103.14035375 102.52023622 110.05252578]
 [ 98.78937596  92.52315827 120.20142524]
 [ 88.41005568 115.13081429 100.10488106]]
[[15.33053313 12.79943738 19.29833314]
 [18.48326387 13.64978122 14.29641824]
 [11.3836399  10.13409011 11.9494954 ]
 [11.30621185 10.75063446 13.64733945]]
[[2 2 1]
 [0 2 1]
 [1 2 1]
 [4 3 6]]

从文本文件构造数组

将数组写入文本文件

np.savetxt('1.txt', arr1, fmt='%0.4f', delimiter=',')

访问 数组元素

用下标访问元素

x = np.array([1, 2, 3, 4, 5, 6])
print(x[4])
5
x=np.array([[1,2,3],[4,5,6]])
print(x[1])
[4 5 6]
arr=np.arange(10)
print(arr)
print(arr[5:8])
arr[5:8]=12
print(arr)
[0 1 2 3 4 5 6 7 8 9]
[5 6 7]
[ 0  1  2  3  4 12 12 12  8  9]
  • 数组切片是原始数组的视图
  • 视图上的任何修改都会直接反应到源数组
arr = np.arange(10) 
arr_slice = arr
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

勤奋努力的野指针

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

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

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

打赏作者

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

抵扣说明:

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

余额充值