首页 > 其他分享 >numpy基础运算

numpy基础运算

时间:2024-03-05 17:01:31浏览次数:17  
标签:10 运算 t5 基础 np shape 数组 print numpy

numpy基础运算

import numpy as np

t1 = np.array([1, 2, 3, 4, 5])
# numpy数组类型为numpy.ndarray
print("type(np.array)=", type(t1))
t2 = np.array(range(6))
print("t1:", t1)
print("t2:", t2)

# np.arange([start,] stop [, stop, ], dtype=None)
# np.arange()和range类似的生成数据列表的方式
t3 = np.arange(6)
t4 = np.arange(4, 10, 2)
print("t3:", t3)
print("t4:", t4)

# 可以用dtype来查看numpy数组元素的类型
print("type(t4[0])=", t4.dtype)
type(np.array)= <class 'numpy.ndarray'>
t1: [1 2 3 4 5]
t2: [0 1 2 3 4 5]
t3: [0 1 2 3 4 5]
t4: [4 6 8]
type(t4[0])= int64
import random

# 指定创建的数组的数据类型
t5 = np.arange(3, dtype=float)
print("type(t5[0])=", t5.dtype)
print("t5:", t5)

t6= np.array([1, 0, 1, 0], dtype=bool)
print("type(t6[0])=", t6.dtype)
print("t6:", t6)

# 修改数组的数据类型
t5 = t5.astype(int)
print("type(t5[0])=", t5.dtype)
print("t5:", t5)

t7 = np.array([random.random() for i in range(5)])
print("t7:", t7)
# 修改浮点型的小数位数
t7 = np.round(t7, 2)
print("t7:", t7)
type(t5[0])= float64
t5: [0. 1. 2.]
type(t6[0])= bool
t6: [ True False  True False]
type(t5[0])= int64
t5: [0 1 2]
t7: [0.55552792 0.38900276 0.32096574 0.35900877 0.28718253]
t7: [0.56 0.39 0.32 0.36 0.29]
# 一维数组的shape是元素个数
a = np.arange(6)
print("a", a.shape)

# 多维数组的shape是每个维度的元素个数, 即数组的形状
b = np.array([[1, 2, 3], [4, 5, 6]])
print("b", b.shape)

c = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print("c", c.shape)

print()
# 修改数组的形状
d = np.arange(12)
print("d:", d)
d = d.reshape((3, 4))
print("d:", d)

print()
# 2块3行4列
e = np.arange(24).reshape(2, 3, 4)
print("e:", e, '\n')

# 4行6列
e = e.reshape((4, 6))
print("e:", e, '\n')

# 一维数组
e = e.reshape(24)
print("e:", e, '\n')

# 1行24列
e = e.reshape((1, 24))
print("e:", e, '\n')

# 扁平化,转换为一维数组
e = e.flatten()
print("e:", e, '\n')

# 24行1列
# e = e.reshape((24, 1))
# print("e:", e, '\n')
a (6,)
b (2, 3)
c (2, 2, 3)

d: [ 0  1  2  3  4  5  6  7  8  9 10 11]
d: [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

e: [[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]] 

e: [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]] 

e: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] 

e: [[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]] 

e: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] 
# 数组和数的计算, 由于广播机制, 运算会被广播到数组的所有元素上
a = np.array([random.randint(1 ,10) for i in range(10)])
print(a)

a = a + 1
print(a)

a = a * 3
print(a)
[ 5  9 10  5  2  9  7  8  1  5]
[ 6 10 11  6  3 10  8  9  2  6]
[18 30 33 18  9 30 24 27  6 18]
# 数组和数组的计算, 对应位置的元素相加减
a = np.arange(1, 25).reshape((4, 6))
b = np.arange(100, 124).reshape((4, 6))
print("a:", a, sep='\n')
print("b:", b, sep='\n')
print("a+b:", a + b, sep='\n')
print("a*b:", a * b, sep='\n')

# 如果两个数组的维度不对应, 也可以计算, 但是仅限于有一个维度相同的情况下才可以进行运算
# 其余情况下维度不同的数组不能进行运算
a:
[[ 1  2  3  4  5  6]
 [ 7  8  9 10 11 12]
 [13 14 15 16 17 18]
 [19 20 21 22 23 24]]
b:
[[100 101 102 103 104 105]
 [106 107 108 109 110 111]
 [112 113 114 115 116 117]
 [118 119 120 121 122 123]]
a+b:
[[101 103 105 107 109 111]
 [113 115 117 119 121 123]
 [125 127 129 131 133 135]
 [137 139 141 143 145 147]]
a*b:
[[ 100  202  306  412  520  630]
 [ 742  856  972 1090 1210 1332]
 [1456 1582 1710 1840 1972 2106]
 [2242 2380 2520 2662 2806 2952]]

广播原则
如果两个数组的后缘维度(从末尾开始算起的维度)的轴长度相符或者其中一方的长度为1,则认为是广播兼容的。

维度可以理解为shape所对应的数字个数。

shape为(3,3,3)的数组不能够和(3,2)的数组进行计算

shape为(3,3,2)的数组够和(3,2)的数组进行计算

shape为(3,3,2)的数组够和(3,1)的数组进行计算

轴(axis)在numpy中可以理解为方向, 使用0,1,2...数字表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(2,2, 3)),有0,1,2轴。

np.arange(0,10).reshape((2,5))的reshpe中2表示0轴长度(包含数据的条数)为2,1轴长度为5,2*5一共10个数据

标签:10,运算,t5,基础,np,shape,数组,print,numpy
From: https://www.cnblogs.com/xushengxiang/p/18054413

相关文章

  • numpyNaN
    numpyNaNnan(NAN,Nan):notanumber表示不是一个数字什么时候numpy中会出现nan:当我们读取本地的文件为float的时候,如果有缺失,就会出现nan当做了一个不合适的计算的时候(比如无穷大(inf)减去无穷大)inf(-inf,inf):infinity,inf表示正无穷,-inf表示负无穷什么时候回出现inf包......
  • numpy数据操作
    numpy数据操作读取数据#numpy读取数据'''np.loadtxt(fname,文件、字符串或产生器,也可以是压缩文件dtype=np.float,数据类型,可选,即确认csv的字符串以什么数据类型读入数组中,默认为np.floatdelimiter=None,分割读......
  • numpy其他函数
    numpy其他函数importnumpyasnp#数组拼接t1=np.arange(12).reshape((2,6))t2=np.arange(12,24).reshape((2,6))print(t1)print(t2)print("*"*50)print(np.vstack((t1,t2)))print("*"*50)print(np.hstack((t1,t2)))[[012345......
  • linux复习基础命令
    Linux基础命令学习目标了解vm备份的两种方式了解快照和克隆的区别了解linux系统文件掌握基础命令指定vmtools的作用1vm两种备份方式为什么要进行备份保证centos操作系统的安全,必须对操作系统进行备份两种备份方式快照备份克隆备份快照备份又称还原点,就是保存在拍快照时候的系......
  • 基本运算符
    Java语言支持如下运算符重点掌握的运算符算数运算符:+、-、*、/、%、++、--%(取余、模运算):例如11/5=2..1(余1)+、-、*、/运算代码举例publicclassDemo01{publicstaticvoidmain(String[]args){inta=10;intb=20;in......
  • Day1.numpy
    numpy数组的应用1.创建引入numpy库importnumpyasnp创建对象一维arr=np.array([1,2,3])二维arr=np.array([1,2,3],[4,5,6])#相当于一个二维数组2.常用属性T数组维度的转换dtype数据类型shape数组维度大小,如三行四列astype类型转换3.获取行列数arr......
  • 固体物理学基础—第一部分
    半导体的晶体结构和结合性质晶格的周期性晶体是由一个或一些特定的原子(离子或分子)经过周期性排列而构成的物质,为了更加方便地分析这些原子,时常把这些原子抽象成类似于物理学中的质点,在二维平面上利用假想的线将晶体中的这些“质点”连接起来形成具有明显规律的空间架格,而这些骨......
  • Stream 的基础
    零、参考资料https://www.zhihu.com/question/27996269https://blog.csdn.net/weixin_43865875/article/details/117732871https://www.cnblogs.com/chunlanse2014/articles/4420525.htmlhttps://developer.mozilla.org/zh-CN/docs/Web/API/Streams_API/Conceptshttps://d......
  • sql注入--基础注入判断方法(构造闭合)
    在我们拿到一个sql注入的题目之后,在确定了注入点之后,接下来要做的事情就是进行基础注入判断。在开始前,我们需要理解一个SQL注入中最常用的词汇——构造闭合。对于SQL处理语句后台的写法:SELECTusername,passwordFROMusersWHEREid=?这里的问号可以有多种的闭合方式,......
  • 前端基础学习1 | Web、Html、CSS
    前端基础学习1|Web、Html、CSS1、Web基础知识Web(wwwWorldWideWeb),全球广域网,也称万维网,能够通过浏览器访问的网站Web网站的工作流程Web标准,也称为网页标准,由一些列的标准组成,大部分由W3C(WorldWideWebConsortium,万维网联盟)负责制定。Web标准由三个部分组成:HTML:......