小编Yan*_*hre的帖子

使用 Python 中的列表列表进行矢量化

我的最终目标是为 for 循环使用矢量化的 numpy 解决方案。如果原始元素中未给出其元素,则此循环为每个元素从另一个列表中创建一个随机样本。但是,for 循环的输入是一个列表列表。我不知道如何对列表列表应用 numpy 向量化。一个可重现的例子在这里:

import random

list_of_all_items = [1, 2, 3, 4, 12, 21, 23, 42, 93]
seen_formats = [[1, 2, 3, 4], [2,23, 21, 3], [12, 42, 93, 1]]


not_seen_formats = []
for seen in seen_formats:
    not_seen_formats.append(random.sample([format_ for format_ in list_of_all_items if format_ not in seen],
                            len(seen) * 1))
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的是:

import numpy as np

np.where(np.in1d(np.random.choice(list_of_all_items, 2, replace = False), np.asarray(seen_formats)))
>> (array([0, 1], dtype=int64),)
Run Code Online (Sandbox Code Playgroud)

可悲的是,这毫无意义。我想要返回的是一个数组,它应该包含给定列表列表的随机样本,例如:

>> array([[12, 21], # those numbers should be random numbers …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy vectorization

5
推荐指数
1
解决办法
317
查看次数

在python中设置字典键函数

我想知道如何创建一个函数来设置字典的键。考虑以下类:

class Dog:
    def __init__(self, first_name, last_name):
        self.first_name = first_name
        self.last_name = last_name
Run Code Online (Sandbox Code Playgroud)

现在让我们实例化对象:

a_dog = Dog("Berty", "Hollows")
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个函数,它返回名字或姓氏,具体取决于我传递给它的参数。我的想法是这样的:

def return_dogs_name(dog, get_dict_key(x)):
     return dog.get_dict_key(x)
Run Code Online (Sandbox Code Playgroud)

def get_dict_key(x):
    return x
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用。

我想要的输出看起来像

return_dogs_name(a_dog, get_dict_key("first_name"))
>>> Berty
Run Code Online (Sandbox Code Playgroud)

这样的功能会是什么样子?

python oop dictionary

0
推荐指数
1
解决办法
87
查看次数

标签 统计

python ×2

arrays ×1

dictionary ×1

numpy ×1

oop ×1

vectorization ×1