python(3) 之numpy数据(一)

最近太忙太忙,停更了一段时间
还是放慢一下步子,整理一下
我用来学习的是Py3版本
这里面有的是用Py2写的,有用到的区别自己查一下

1.纯python运算和Numpy库运算比较

#关于向量相加的两种方法及其用时

from datetime import datetime
import time
import numpy as np

#向量相加-Python
def pythonsum(n):
    a = list(range(n))
    print(type(a))
    b = list(range(n))
    c = []
    for i in range(len(a)):
        a[i] = i ** 2
        b[i] = i ** 3
        c.append(a[i] + b[i])
    return c

#向量相加-NumPy

def numpysum(n):
    a = np.arange(n) ** 2
    print(type(a))
    b = np.arange(n) ** 3
    c = a + b
    return c


#效率比较
size = 10
#pythonsum函数用时
start_time = datetime.now()
v = pythonsum(size)
print(v)
end_time = datetime.now()
detal = end_time - start_time
print("倒数两个数字是:",v[-2:])
print("pythonsum函数所用时间是:",detal.microseconds)

#numpysum函数用时
start_time = datetime.now()
f = numpysum(size)
print(f)
end_time = datetime.now()
detal = end_time - start_time
print("倒数两个数字是:",v[-2:])
print("pythonsum函数所用时间是:",detal.microseconds) #微秒


#可以得出结论:用numpy库来计算比用纯python运算速率更快
'''
需要注意的是:
#向量相加-Python
def pythonsum(n):
    a = list(range(n))
    b = list(range(n))
    c = []
    for i in range(len(a)):
        a[i] = i ** 2
        b[i] = i ** 3
        c.append(a[i] + b[i])
    return c

在这个函数中,不能写成:
        a = range(n)
        b = range(n)
    他们生成的是一个 range object
他们并没有直接返回一个list    [ , , , ]
所以需要强制转换成 a = list(range(n))
                   b = list(range(n))


而对于numpy库中的arange()函数,它生成一个ndarray多维数组
如:
    >>> import numpy as np
    >>> np.arange(3)
    array([0, 1, 2])
    >>> 

'''

2.数组的创建

#数组的创建

import numpy as np


#numpy数组  arange
a = np.arange(5)
print(a.dtype)  #看一下数组的类型dtype<'int32'>, big-endian 4*8 = 32位的数据类型  

print(a)
print(a.shape)  #看一下数组的维度,,返回一个元组(5,)


#创建多维数组  array
m = np.array([np.arange(2),np.arange(2)])
print(m)
print (m.shape)
print (m.dtype)
n = np.ones_like(m)#创建一个类似于m的数组
print("n",n)


print("\n")
print("***********************************")
#zeros()函数创建数组
print(np.zeros(10))
print(np.zeros((3, 6)))#3x6
print(np.empty((2, 3, 2)))#返回一个空数组,里面是一些垃圾数,而不是一个全为0的数组,
print(np.arange(15))

#eye   生成NxN的单位矩阵
y = np.eye(5)
print(y)

#identity    生成NxN的单位矩阵
z = np.identity(2)
print(z)

print("***********************************")
#asarray
w = np.asarray([np.arange(2),np.arange(2)])
print(w)

3.Numpy的数据类型

#numpy数据类型
import numpy as np
print ("In: float64(42)")
print (np.float64(42))

print ("In: int8(42.0)")
print (np.int8(42.0))

print ("In: bool(42)")
print( np.bool(42))

print (np.bool(0))

print ("In: bool(42.0)")
print( np.bool(42.0))

print ("In: float(True)")
print( np.float(True))
print (np.float(False))

print( "In: arange(7, dtype=uint16)")
print( np.arange(7, dtype=np.uint16))


print( "In: int(42.0 + 1.j)")
try:
   print( np.int(42.0 + 1.j)) #1.j复数类型
except TypeError:
   print( "TypeError")
#Type error


print ("In: float(42.0 + 1.j)")
print (float(42.0 + 1.j))
#Type error
#float无法将一个复数类型转换,报错之后,后面的代码不执行了

a = 1.5j
print(a)

4.数据类型转换

# 数据类型转换
arr = np.array([1, 2, 3, 4, 5])
arr.dtype
float_arr = arr.astype(np.float64)
float_arr.dtype

arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
arr
arr.astype(np.int32)

numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)
numeric_strings.astype(float)

6.数据类型对象

#数据类型对象
a = np.array([[1,2],[3,4]])

print a.dtype.byteorder

print a.dtype.itemsize

7.字符编码

#数据类型对象
a = np.array([[1,2],[3,4]])

print a.dtype.byteorder

print a.dtype.itemsize

#字符编码
print np.arange(7, dtype='f')
print np.arange(7, dtype='D')

print np.dtype(float)

print np.dtype('f') #单精度

print np.dtype('d') #双精度


print np.dtype('f8') #双精度

print np.dtype('Float64')#双精度
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值