001.python科学计算库numpy(上)

版权声明:本文为博主原创文章,允许转载,请标明出处。 https://blog.csdn.net/qwdafedv/article/details/82684218

genfromtxt

  • 从文本文件加载数据,并按指定的方式处理缺失值。
import numpy

# genfromtxt 从文本文件加载数据,并按指定的方式处理缺失值。
# delimiter 用来分隔值的字符串。
#           默认情况下,任何连续的空格都充当分隔符。
#           一个整数或整数序列也可以作为每个字段的宽度提供
# dtype 结果数组的可选数据类型。默认情况下dtype=float。
# encoding 用于解码inputfile的编码。
#           当' fname '是文件对象时不适用。
#           特殊的值'bytes'支持向后兼容的变通方法,确保在可能的情况下接收字节数组,
#           并将latin1编码的字符串传递给转换器。重写此值以接收unicode数组并将字符串作为输入传递给转换器。
#           如果设置为None,则使用系统默认值。默认值是'bytes'。
world_alcohol = numpy.genfromtxt("001_numpy_1.txt", delimiter='——', dtype=str, encoding='utf8')
print(type(world_alcohol))
print(world_alcohol)

array

  • 创建一个数组。
import numpy

vector = numpy.array([5, 10, 15, 20])
matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print(vector)
print(matrix)

shape

  • 数组维数的元组
import numpy

vector = numpy.array([5, 10, 15, 20])
print(vector.shape)
matrix = numpy.array([[5, 10, 15], [20, 25, 30]])
print(matrix.shape)

dtype

import numpy

# NumPy数组中的每个值都必须具有相同的数据类型
# NumPy在读取数据或将列表转换为数组时,将自动找出适当的数据类型
# 可以使用dtype属性检查NumPy数组的数据类型
numbers = numpy.array([1, 2, 3, 4])
print(numbers.dtype)

nan

import numpy

# 当NumPy不能将一个值转换为浮点数或整数之类的数字数据类型时,它使用了一个特殊的nan值,表示的不是数字
# nan是缺失的数据
world_alcohol = numpy.genfromtxt("001_numpy_1.txt", delimiter='——', dtype=float, encoding='utf8')
print(type(world_alcohol))
print(world_alcohol)

切片

import numpy

# 数组切片
vector = numpy.array([5, 10, 15, 20])
# 第0个到第2个
print(vector[0:3])
print('---')
matrix = numpy.array([
    [5, 10, 15],
    [20, 25, 30],
    [35, 40, 45]
])
# 所有行的第1列
print(matrix[:, 1])
print('---')
# 所有行的 第0列到第1列
print(matrix[:, 0:2])
print('---')
# 第1行到第2行的,第0列到第1列
print(matrix[1:3, 0:2])

数组赋值判断、切片赋值判断

import numpy

# 它会将第二个值与向量中的每个元素进行比较
# 如果值相等,Python解释器返回True;否则,返回False
vector = numpy.array([5, 10, 15, 20])
print(vector == 10)
print("---1")
matrix = numpy.array([[5, 10, 15],
                      [20, 25, 30],
                      [35, 40, 45]
                      ])
print(matrix == 25)
print("---2")
# 将vector与值10进行比较,值10生成一个新的布尔向量[False、True、False、True]。它将这个结果赋给equal_to_ten
vector = numpy.array([5, 10, 15, 10])
equal_to_ten = (vector == 10)
print(equal_to_ten)
print("---3")
# 读取布尔数组为True对应的索引数据
print(vector[equal_to_ten])
print("---4")
matrix = numpy.array([[5, 10, 15],
                      [20, 25, 30],
                      [35, 40, 45]
                      ])
# matrix 所有行的第1列是否等于25 [False  True False]
second_column_25 = (matrix[:, 1] == 25)
print(second_column_25)
print("---5")
# 读取布尔数组为True对应的索引数据(第二个元素为True,所以打印了第二个元素的数据)
print(matrix[second_column_25, :])
print("---6")
# 我们还可以对多个条件进行比较
vector = numpy.array([5, 10, 15, 20])
equal_to_ten_and_five = (vector == 10) & (vector == 5)
print(equal_to_ten_and_five)
print("---7")
vector = numpy.array([5, 10, 15, 20])
equal_to_ten_or_five = (vector == 10) | (vector == 5)
print(equal_to_ten_or_five)
print("---8")
vector[equal_to_ten_or_five] = 50
print(vector)
print("---9")
matrix = numpy.array([
    [5, 10, 15],
    [20, 25, 30],
    [35, 40, 45]
])
second_column_25 = matrix[:, 1] == 25
print(second_column_25)
print("---10")
# 将布尔数组中为True的元素,中的第0个元素赋值为10
matrix[second_column_25, 0] = 10
print(matrix)

astype

import numpy

vector = numpy.array(["1", "2", "3"])
print(vector.dtype)
print(vector)
print('---')
vector = vector.astype(float)
print(vector.dtype)
print(vector)

sum

  • 返回给定轴上数组元素的和
import numpy

vector = numpy.array([5, 10, 15, 20])
print(vector.sum())
matrix = numpy.array([[1, 2], [3, 4]])
# 返回给定轴上数组元素的和
print(matrix.sum())
print("---1")
matrix = numpy.array([
    [5, 10, 15],
    [20, 25, 30],
    [35, 40, 45]
])
# 计算1轴所有元素的和
print(matrix.shape)
print(matrix.sum(axis=1))
print("---2")
# 计算0轴所有元素的和
print(matrix.shape)
print(matrix.sum(axis=0))
print("---3")
matrix = numpy.array([
    [[1, 2, 3],
     [4, 5, 6]],
    [[11, 22, 33],
     [44, 55, 66]]
])
print("----")
print(matrix.shape)
print(matrix.sum())
print("---4")
# 原始shape为(2,2,3),返回0轴的总和,结果是的shape是:(2,3)
# 可理解为选中第0层的[],把里面的所有元素(2个(2,3)二维数组)相加,
# 所有的元素相加得到(2,3)二维数组,已无最外层,结果为(2,3)
print(matrix.shape)
print(matrix.sum(axis=0))
print("---5")
# 原始shape为(2,2,3),返回1轴的总和,结果是的shape是:(2,3)
# 可理解为选中第1层的[],把里面的所有元素(2个(1,3)一维数组)相加,
# 所有的元素相加得到(1,3)一维数组,最外层为2,结果为(2,3)
print(matrix.shape)
print(matrix.sum(axis=1))
print("---6")
# 原始shape为(2,2,3),返回2轴的总和,结果是的shape是:(2,2)
# 可理解为选中第2层的[],把里面的所有元素(数字)相加,
# 所有的元素相加得到数字,,最外层为(2,2),结果为(2,2)
print(matrix.shape)
print(matrix.sum(axis=2))

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python中的循环结构

Python主要有for循环和while循环两种形式的循环结构,多个循环可以嵌套使用,并且还经常和选择结构嵌套使用。while循环一般用于循环次数难以提前确定的...

3846
来自专栏desperate633

LintCode 翻转字符串题目分析代码

说明 单词的构成:无空格字母构成一个单词 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括 如何处理两个单词间的多个空格?在反转字符...

752
来自专栏GreenLeaves

JavaScript之firstChild属性、lastChild属性、nodeValue属性学习

1.数组元素childNodes[0]有更直观易读的优点,这边在介绍一个有同样功能的属性,且更加语义化-------->firstChild属性 假设我们需要目...

2109
来自专栏技术/开源

从C#到TypeScript - 变量

从C#到TypeScript - 变量 TypeScript的变量声明和ES6差不多,相比之前主要是多了let和const 为什么不用var 不管是TypeSc...

1896
来自专栏恰童鞋骚年

剑指Offer面试题:3.替换空格

  在网络编程中,如果URL参数中含有特殊字符,如空格、'#'等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的...

832
来自专栏机器学习实践二三事

Numpy使用3

上一篇博客介绍了numpy的几种初始化方式和numpy的数据类型(dtype)和shape的相关知识,这篇介绍numpy矩阵的索引与切片 矢量化 numpy数组...

1918
来自专栏闻道于事

Java之分支和循环

Java中的分支语句: if语句: if语句的四种写法:   (1)   if(表达式_布尔值) {   ...   }   (2)   if(表达式_布...

3149
来自专栏老司机的技术博客

宝宝都能学会的python编程教程6:列表(list)

上期编程题的答案如上图。 列表(list) list是一种有序的集合,可以随时添加和删除其中的元素。 当索引超出了范围时,Python会报一个IndexErr...

3676
来自专栏Kevin-ZhangCG

[ Java学习基础 ] Java的抽象类与接口

2376
来自专栏Python研发

go基础编程 day-2

  零值并不等于空值,而是当变量声明为某种来兴后的默认零值,通常情况下默认值为0,bool为false,string为空字符串。

1132

扫码关注云+社区

领取腾讯云代金券