社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Daniel Mesejo  »  全部回复
回复总数  9
6 年前
回复了 Daniel Mesejo 创建的主题 » 在Python中从多维数组中删除行

如果我理解正确,你可以这样做:

import numpy as np

a = np.array([[1, 1, 0, 0, 1],
              [0, 0, 1, 1, 1],
              [0, 1, 0, 1, 1],
              [1, 0, 1, 0, 1],
              [0, 0, 1, 0, 1],
              [1, 0, 1, 0, 0]])

left = np.count_nonzero(a[:, :2], axis=1) != 0
a = a[left]

right = np.count_nonzero(a[:, -2:], axis=1) != 0
a = a[right]

print(a)

输出

[[1 1 0 0 1]
 [0 1 0 1 1]
 [1 0 1 0 1]]

或者,一个较短的版本:

left = np.count_nonzero(a[:, :2], axis=1) != 0
right = np.count_nonzero(a[:, -2:], axis=1) != 0
a = a[(left & right)]
5 年前
回复了 Daniel Mesejo 创建的主题 » 在python中用元组值计算两个字典的点积

计算上的值的doc乘积 dict_of_search VS dict_of_items ,您可以:

def prod(source, target):
    return sum(source.get(key, 0) * target.get(key, 0) for key in source.keys() | target.keys())


dict_of_items = {1: [('dog', 3), ('bird', 0)], 2: [('egret', 2), ('cat', 3), ('bird', 0), ('aardvark', 1)],
                 3: [('fish', 6), ('bird', 0), ('dog', 1), ('aardvark', 5)],
                 4: [('fish', 6), ('bird', 0), ('dog', 1), ('aardvark', 2)], 5: [('egret', 4), ('bird', 0)],
                 6: [('bird', 0)], 7: [('dog', 5), ('bird', 0)], 8: [('bird', 0), ('aardvark', 1)]}

dict_of_search = {1: [('bird', 0), ('dog', 1), ('cat', 3)]}

for k, v in dict_of_items.items():
    for se in dict_of_search.values():
        print(k, prod(dict(v), dict(se)))

产量

1 3
2 9
3 1
4 1
5 0
6 0
7 5
8 0

如果要将结果存储在字典中,请执行以下操作:

result = {}
for k, v in dict_of_items.items():
    for se in dict_of_search.values():
        result[k] = prod(dict(v), dict(se))

print(result)

产量

{1: 3, 2: 9, 3: 1, 4: 1, 5: 0, 6: 0, 7: 5, 8: 0}
6 年前
回复了 Daniel Mesejo 创建的主题 » 如何在python中生成词频矩阵

因为你用 machine-learning ,我建议您使用 sklearn.CountVectorizer :

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

corpus = ['He is a good person',
          'He is bad student',
          'He is hardworking']
df = pd.DataFrame(data=corpus, columns=['sentences'])

vectorizer = CountVectorizer(vocabulary=['he', 'is', 'a', 'good', 'person', 'bad', 'student', 'hardworking'], min_df=0,
                             stop_words=frozenset(), token_pattern=r"(?u)\b\w+\b")
X = vectorizer.fit_transform(df['sentences'].values)
result = pd.DataFrame(data=X.toarray(), columns=vectorizer.get_feature_names())
print(result)

产量

   he  is  a  good  person  bad  student  hardworking
0   1   1  1     1       1    0        0            0
1   1   1  0     0       0    1        1            0
2   1   1  0     0       0    0        0            1
6 年前
回复了 Daniel Mesejo 创建的主题 » 修改列表中包含特定数字(而不仅仅是字符)的元素的python方法

假设可能有两位数以上的数字,则代码会被窃听,例如:

IR = ['5xy', '51y', '-2x']
result = [(e[0]+e[2:]) if (e[1]== '1' and e[2].isalpha() ) else e for e in IR ]
print(result)

返回:

['5xy', '5y', '-2x']

一个可能更像蟒蛇的方法是使用一个函数来代替:

def transform(e):
    multiplier = ''.join(c for c in e if c.isnumeric())
    return e[0] + e[2:] if multiplier == '1' else e


IR = ['5xy', '51y', '-2x']
result = [transform(e) for e in IR]
print(result)

IR = ['5xy', '+1y', '-2x']
result = [transform(e) for e in IR]
print(result)

产量

['5xy', '51y', '-2x']
['5xy', '+y', '-2x']

注意,transforms假设数字是整数,但是可以很容易地修改为包括float(只包括对 . )

6 年前
回复了 Daniel Mesejo 创建的主题 » 在python中读取文件时如何将值组合在一起

基于@jacobirr注释并考虑空白,您可以执行以下操作:

content = "12.345, 23.456, 34.567"
result = [s.strip() for s in content.split(",")]
print(result)

产量

['12.345', '23.456', '34.567']

或者作为替代:

content = "12.345, 23.456, 34.567"
result = list(map(str.strip, content.split(",")))
print(result)

产量

['12.345'、'23.456'、'34.567']
5 年前
回复了 Daniel Mesejo 创建的主题 » 如何在python中简化变量的分数值

正如@prune提到的,必须将变量的值转换为字符串,另一种方法是使用 f-string :

from fractions import Fraction
b = 0.45
print(Fraction(f'{b}'))

建议的文档解决方案是 limit_denominator :

b = 0.45
print(Fraction(b).limit_denominator())

产量

9/20

有关浮点的详细信息,请参见 this .

6 年前
回复了 Daniel Mesejo 创建的主题 » 基于元素名对python中长列表的元素进行分组

你可以使用 itertools.groupby 这样地:

from itertools import groupby

list3 = ['20180406_145813_4_1.jpg',
         '20180406_145813_5_1.jpg',
         '20180406_145813_6_1.jpg',
         '20180406_175827_10_12.jpg',
         '20180406_175827_11_12.jpg',
         '20180409_190651_7_2.jpg',
         '20180409_190651_8_2.jpg']

result = [list(group) for _, group in groupby(list3, key=lambda x: x.split('_')[3])]
print(result)

产量

[['20180406_145813_4_1.jpg', '20180406_145813_5_1.jpg', '20180406_145813_6_1.jpg'], ['20180406_175827_10_12.jpg', '20180406_175827_11_12.jpg'], ['20180409_190651_7_2.jpg', '20180409_190651_8_2.jpg']]

以上 list comprehension 相当于 for 循环:

result = []
for _, group in groupby(list3, key=lambda x: x.split('_')[3]):
    result.append(list(group))
6 年前
回复了 Daniel Mesejo 创建的主题 » python转置numpy数组[复制]

可以添加新轴:

import numpy as np

A = np.array([1, 2, 3, 4])
A = A[:, np.newaxis]
print(A)

产量

[[1]
 [2]
 [3]
 [4]]
6 年前
回复了 Daniel Mesejo 创建的主题 » 基于python中的条件创建一个列表以创建一个唯一的列表

使用 groupby :

from itertools import groupby
from operator import itemgetter

a = [0, 0, 0, 1, 1, 1, 3, 3, 3]
b = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

output = [list(map(itemgetter(1), group)) for _, group in groupby(zip(a, b), key=itemgetter(0))]
print(output)

产量

[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]