数据分析(一)

1. numpy:多维数据的创建

多维数据组(矩阵ndarray)

  • shape:维度的大小
  • ndim:维度的个数
  • dtype:数据类型

1.1 随机抽样创建

1.1.1 rand

生成指定维度的随机多维度浮点型数组,范围[0,1)

>>> arr3 = np.random.rand(3,5)
>>> arr3
array([[0.63305909, 0.10998371, 0.88867374, 0.85709422, 0.98466576],
       [0.02936647, 0.31256693, 0.64209498, 0.954163  , 0.93805274],
       [0.11988711, 0.05113142, 0.53949646, 0.12933075, 0.81462957]])
>>> arr3.shape
(3, 5)
>>> arr3.ndim
2
>>> arr3.dtype
dtype('float64')
1.1.2 uniform

uniform(low=0.0, high=1.0, size=None)

>>> np.random.uniform(1,5,(3,4))
array([[3.75234365, 4.6141954 , 1.21824386, 3.65332011],
       [1.18223551, 3.11600614, 3.65221365, 2.25886951],
       [1.89128317, 1.17665316, 1.7609036 , 3.32347667]])
1.1.3 randint

randint(low, high=None, size=None, dtype='l')

>>> arr5 = np.random.randint(2,10,(3,4))
>>> arr5
array([[5, 8, 7, 7],
       [4, 2, 9, 9],
       [9, 8, 9, 6]])

注意点:

  1. 如果没有指定最大值,只是指定了最小值,范围是[0,最小值)
  2. 如果有最小值,也有最大值,范围是[最小值,最大值)

1.2 序列创建

1.2.1 array
  1. 通过列表进行创建

    >>> lst1 = [1,2,3]
    >>> arr6 = np.array(lst1)
    [1 2 3]
    
  2. 通过列表嵌套列表创建

    >>> list2 = [[1,2,3],[3,4,5]]
    >>> arr7 = np.array(list2).
    array([[1, 2, 3],
           [3, 4, 5]])
    
    >>> list3 = [[1,2,3],[4,5,6,7]]
    >>> arr8=np.array(list3)
    [list([1, 2, 3]) list([4, 5, 6, 7])].
    

    注意点:里面的个数需要一样

1.2.2 zeros
>>> np.zeros((3,4,5))
array([[[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]],

       [[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]],

       [[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]]])

注意点:

  1. 创建的数组里面的数据为0
  2. 默认的数据类型是float
  3. 可以指定其他的数据类型
1.2.3 ones
>>> arr10  = np.ones((3,4,5))
[[[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. 1. 1.]
  [1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]]]
1.2.4 arange
>>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> np.arange(0,10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> np.arange(0,10,3)
array([0, 3, 6, 9])

>>> arr12 = np.arange(15)
>>> arr12.reshape(3,5)
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> arr12
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
# reshape()不改变原来的数组

注意点:

  1. 只填写一位数[0,这位)
  2. 填写两位[最低位,最高位)
  3. 填写三位[最低位,最高位,步长)
  4. 创建的是一维数组
  5. 等同于np.array(range())

1.3 数组重新排列

>>> nd9 = np.arange(10)
[0 1 2 3 4 5 6 7 8 9]
>>> nd10 = nd9.reshape(2,5)
[[0 1 2 3 4]
 [5 6 7 8 9]]
>>> nd9
[0 1 2 3 4 5 6 7 8 9]

注意点:

  1. 有返回值,返回新的数组,原始数组不受影响
  2. 进行维度大小的设置的过程中,要注意数据的个数,注意元素的个数
>>> arr12 = np.arange(15)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
>>> np.random.shuffle(arr12)
>>> arr12
array([ 9, 14,  8, 11,  0,  3, 12, 13,  7, 10,  2,  4,  5,  1,  6])

注意点:

  1. 在原始数据集上做的操作(更改元素数组)
  2. 将原始数组的元素进行重新排序,打乱顺序
  3. shuffle这个没有返回值

1.4 数据类型的转换

>>> class Dog(object):
...    	pass
>>> dog1 = Dog()
>>> dog2 = Dog()
>>> arr20 = np.array([dog1,dog2])
>>> print(arr20)
[<__main__.Dog object at 0x0000029BC94E7D30>
 <__main__.Dog object at 0x0000029BC94E7DD8>]
>>> print(arr20.dtype)
object
>>> arr22 = np.array(list('hello python'))
>>> print(arr22)
['h' 'e' 'l' 'l' 'o' ' ' 'p' 'y' 't' 'h' 'o' 'n']
>>> print(arr22.dtype)
<U1                  # unicode编码

>>> arr23 = np.array(['hello1','world'])
>>> print(arr23)
['hello1' 'world']
>>> print(arr23.dtype)
<U6
>>> arr21 = np.array([1,2,3])
>>> print(arr21)
[1 2 3]
>>> print(arr21.dtype)
int32

>>> arr24 = arr21.astype(np.int64)
>>> print(arr24)
[1 2 3]
>>> print(arr24.dtype)
int64

注意点:

  1. astype()不是在原始数组做操作,有返回值,返回的是更改数据类型的新数组
  2. 在创建新数组的过程中,有dtype参数进行指定

1.5 数组转换列表

>>> arr1
[1 2 3]
>>> list(arr1)
[1, 2, 3]
>>> arr1.tolist()
[1, 2, 3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值