numpy每日练习题:np.genfromtxt+np.ndenumerate+初始化有名字的数组

@TOC

功能函数:

np.genfromtxt()

功能:读取txt文件

np.ndenumerate()

功能:迭代多维数组,返回两个元素:一个是坐标,一个是数据

np.ndarray中的def new()

功能:用于初始化数组并分配内存

一些知识点:

1.delimiter:分隔符

2.关于双重否定的理解:不含非0元素,直接干掉不含和非,把他们改成全,也就是说翻译过来就是全0.

3.在颜色矩阵中,通道数一般放在最后,比如(16163)。维度0:代表r,g,b每一个通道。

每日一练(10题):

笔者在每一题后设置了分数,笔者认为打出来的分数依然可以对你的学习进行评估。(低于60:代表需要重新学习。60-80:恭喜你掌握了大部分,但有一些细节还需要加深。80-100:太好了,你的学习太棒了)
1.如何把一个浮点数组直接转换成整型(10)(copy代表不会影响原来的函数)

a1 = np.random.randn(100,2)
a1.astype(torch.int32,copy=True)

2.从文本文件中读取数据?(10)

# path:文件路径,
 np.genfromtxt(path,delimiter=',')

3.如何得到矩阵的坐标(10)

for index, i in np.ndenumerate(torch.eye(3))print(index,i)

4.矩阵的每一行减去算术平均值(10)

a4 = np.random.rand(3,3)*10
np.subtract(a4 ,np.mean(a4,axis=1,keepdims=True))

5.把数组按第n列排序?(10)

# 对某行进行操作,先要选择哪一行再进行操作
a5 = np.random.randint(0, 9, (3, 5))

a5 [a5 [:, 1].argsort()]  # 按第二列排序

a5 [:, 1].argsort():返回的是索引

6.如何判断一个二维数组有全为0的列?(10)

# a6.any(axis=0)生成bool值判断这一列是否有非0数,
a6= np.random.randint(0,3,(3,20))
print('\n',a6)
print((~a6.any(axis=0)).any())

7.使用迭代器计算1x3和3x1的数组的和?(10)

# np.nditer([A, B, None]):生成A和B中的元素的全排列,并保留他们3*3矩阵每个位置的地址,通过z[...]来访问该地址。
# it.operands[]:来访问it里面的数据,[]是你要访问的维度
A = np.arange(3).reshape(3, 1)
B = np.arange(3).reshape(1, 3)
it = np.nditer([A, B, None])  # 多维数组的迭代
for x, y, z in it:
    z[...] = x + y
print(it.operands[2])

8.创建一个有名字的数组类 (10)

# 
class NamedArray(np.ndarray):
	# 初始化数组的数据并共享数据以及数组的名字,共享数据指的是copy一份新的数据
    def __new__(cls, array, name="no name"):
        obj = np.asarray(array).view(cls)
        obj.name = name
        return obj
        
	# 用于判断该对象是不是直接类名来创建的,通过其他数组派生的就不会有名字,这个时候obj就不为none。
    def __array_finalize__(self, obj):
        if obj is None: return
        self.info = getattr(obj, 'name', "no name")
Z = NamedArray(np.arange(10), "range_10")
print(Z.name)

9.对一个给定数组,如何按第二个数组表示的索引位置将相同位置的加到一起,注意重复的位置要重复加1?(10)

X = [1,2,3,4,5,6]
I = [0,0,0,1,1,2] 
F = np.bincount(I,X)

10.对一个(w,h,3)表示的图像,如何计算不重复的颜色(10)

import numpy as np

# 假设您有一个 (w, h, 3) 表示的图像,可以用随机颜色填充
w, h = 4, 4  # 图像的宽度和高度
image = np.random.randint(0, 256, size=(w, h, 3), dtype=np.uint8)  # 随机生成图像数据

# 将图像数据重塑为 (w*h, 3) 形状的二维数组,每行表示一个像素的颜色
pixels = image.reshape(-1, 3)

# 使用 np.unique 函数查找不重复的颜色,
unique_colors = np.unique(pixels, axis=0)

# 打印不重复颜色的数量和颜色列表
num_unique_colors = unique_colors.shape[0]
print(f"Number of unique colors: {num_unique_colors}")
print("Unique colors:")
print(unique_colors)

你可能感兴趣的:(numpy,python,开发语言)