14天Python编程从入门到实践--Day13:数据分析之Numpy

#Numpy基础数据结构

#Numpy数组是一个多维数组对象,称为ndarray。由两部分组成:
#1.实际的数据
#2.描述这些数据的元数据

import numpy as np

ar = np.array([1,2,3,4,5,6])
ar1 = np.array([[1,2,3,4],[3,4,5,3],[5,4,1,1]])  #二维数组
print([1,2,3,4,5,6])
print(ar,type(ar))
print(ar.ndim) #输出数组维度的个数,rank

print(ar1)
print(ar1.ndim)
print(ar1.shape) #数组的维度,n行m列(n,m)
print(ar1.size) #总共元素的个数
print(ar.dtype) #数值数据类型
print(ar.itemsize)
print(ar.data)
ar1

输出:
[1, 2, 3, 4, 5, 6]
[1 2 3 4 5 6] 
1
[[1 2 3 4]
 [3 4 5 3]
 [5 4 1 1]]
2
(3, 4)
12
int32
4

Out[16]:
array([[1, 2, 3, 4],
       [3, 4, 5, 3],
       [5, 4, 1, 1]])

#创建数组:array()函数

ar2 = np.array(range(10))
ar3 = np.arange(10)
ar4 = np.array([0,1,2,3,4,5,6])
ar5 = np.array([[0,1,2,3,4,5,6],[0,1,2,3,4,5,6]])
ar6 = np.array([[0,1,2,3,4,5,6],['a','b','c','d','e','f','g']])
ar7 = np.array([[0,1,2,3,4,5,6],['a','b','c','d','e','f','g','h']])
ar8 = np.array(np.random.rand(10).reshape(2,5))

print(ar2)
print(ar3)
print(ar4)
print(ar5)
print(ar6,ar6.ndim)
print(ar7,ar7.ndim)
print(ar8)

输出:
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6]
[[0 1 2 3 4 5 6]
 [0 1 2 3 4 5 6]]
[['0' '1' '2' '3' '4' '5' '6']
 ['a' 'b' 'c' 'd' 'e' 'f' 'g']] 2
[list([0, 1, 2, 3, 4, 5, 6]) list(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])] 1
[[ 0.32319683  0.17803918  0.36251316  0.0944563   0.98634951]
 [ 0.34702789  0.36164464  0.70085575  0.30127829  0.97613475]]

#使用arrange()创建数组

print(np.arange(10))
print(np.arange(10.0))
print(np.arange(3,13))
print(np.arange(3.0,19.0,3))
print(np.arange(10000))

输出:
[0 1 2 3 4 5 6 7 8 9]
[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9.]
[ 3  4  5  6  7  8  9 10 11 12]
[  3.   6.   9.  12.  15.  18.]
[   0    1    2 ..., 9997 9998 9999]

# 创建数组:linspace():返回在间隔[开始,停止]上计算的num个均匀间隔的样本。

ar1 = np.linspace(2.0, 3.0, num=5)
ar2 = np.linspace(2.0, 3.0, num=5, endpoint=False)
ar3 = np.linspace(2.0, 3.0, num=5, retstep=True)
print(ar1,type(ar1))
print(ar2)
print(ar3,type(ar3))
# numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
# start:起始值,stop:结束值
# num:生成样本数,默认为50
# endpoint:如果为真,则停止是最后一个样本。否则,不包括在内。默认值为True。
# retstep:如果为真,返回(样本,步骤),其中步长是样本之间的间距 → 输出为一个包含2个元素的元祖,第一个元素为array,第二个为步长实际值

输出:
[ 2.    2.25  2.5   2.75  3.  ] 
[ 2.   2.2  2.4  2.6  2.8]
(array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25) 

# 创建数组:zeros()/zeros_like()/ones()/ones_like()

ar1 = np.zeros(5)  
ar2 = np.zeros((2,2), dtype = np.int)
print(ar1,ar1.dtype)
print(ar2,ar2.dtype)
print('------')
# numpy.zeros(shape, dtype=float, order='C'):返回给定形状和类型的新数组,用零填充。
# shape:数组纬度,二维以上需要用(),且输入参数为整数
# dtype:数据类型,默认numpy.float64
# order:是否在存储器中以C或Fortran连续(按行或列方式)存储多维数据。

ar3 = np.array([list(range(5)),list(range(5,10))])
ar4 = np.zeros_like(ar3)
print(ar3)
print(ar4)
print('------')
# 返回具有与给定数组相同的形状和类型的零数组,这里ar4根据ar3的形状和dtype创建一个全0的数组

ar5 = np.ones(9)
ar6 = np.ones((2,3,4))
ar7 = np.ones_like(ar3)
print(ar5)
print(ar6)
print(ar7)
# ones()/ones_like()和zeros()/zeros_like()一样,只是填充为1

输出:
[ 0.  0.  0.  0.  0.] float64
[[0 0]
 [0 0]] int32
------
[[0 1 2 3 4]
 [5 6 7 8 9]]
[[0 0 0 0 0]
 [0 0 0 0 0]]
------
[ 1.  1.  1.  1.  1.  1.  1.  1.  1.]
[[[ 1.  1.  1.  1.]
  [ 1.  1.  1.  1.]
  [ 1.  1.  1.  1.]]

 [[ 1.  1.  1.  1.]
  [ 1.  1.  1.  1.]
  [ 1.  1.  1.  1.]]]
[[1 1 1 1 1]
 [1 1 1 1 1]]

# 创建数组:eye()

print(np.eye(5))
# 创建一个正方的N*N的单位矩阵,对角线值为1,其余为0

输出:
[[ 1.  0.  0.  0.  0.]
 [ 0.  1.  0.  0.  0.]
 [ 0.  0.  1.  0.  0.]
 [ 0.  0.  0.  1.  0.]
 [ 0.  0.  0.  0.  1.]]

你可能感兴趣的:(14天Python编程从入门到实践--Day13:数据分析之Numpy)