小编Kri*_*673的帖子

如何在MATLAB中有效地比较两个向量中的元素而不使用循环?

假设我有一个矩阵,A其第一列包含重复项目ID,第二列包含重量.

A= [1   40
    3   33
    2   12
    4   22
    2   10
    3   6
    1   15
    6   29
    4   10
    1   2
    5   18
    5   11
    2   8
    6   25
    1   14
    2   11
    4   28
    3   38
    5   35
    3   9];
Run Code Online (Sandbox Code Playgroud)

我现在想要找出每个实例A及其相关最小权重的差异.为此,我创建了一个矩阵B,其第一列包含第1列中的唯一ID,第2列包含从A第2列中找到的相关最小权重A.

B=[1    2
   2    8
   3    6
   4    10
   5    11
   6    25];
Run Code Online (Sandbox Code Playgroud)

然后,我想在第3列中存储A每个条目的差异及其相关的最小权重.

A= [1   40  38
    3   33  27
    2   12  4
    4   22 …
Run Code Online (Sandbox Code Playgroud)

matlab vectorization

3
推荐指数
1
解决办法
125
查看次数

快速提取另一个向量中的索引分组的向量中元素的频率?

假设我有一个矩阵,A其第一列包含一些项ID,第二列包含0或1.

A=[3    1
   1    0
   4    0
   3    0
   1    1
   2    1
   3    1
   4    0
   2    0
   4    1
   3    1
   4    0
   2    1
   1    1
   2    0];
Run Code Online (Sandbox Code Playgroud)

我想找到哪个项目ID拥有最多1的,并从A提取其条目,一个接一个.所以,我做的事情是这样的,我做一个矩阵B提取所有从A 1项,找到最频繁出现项目ID,freq_item{1}B,然后从提取所有条目A该ID的.然后,删除最频繁项目的所有实例,并搜索下一个最常用的项目.如果两个或多个项目具有相同数量的1,选择具有1的的更大的比例:

B = A(A(:,2)==1,:);
for i=1:size(unique(A(:,1)),1)
   freq_item{i} = A(A(:,1)==mode(B(:,1)),:);
   B = B(B(:,1)~=mode(B(:,1)),:);
end
Run Code Online (Sandbox Code Playgroud)

所以,输出是:

freq_item{1,1}=[3     1
                3     0
                3     1
                3     1]

freq_item{1,2}=[1     0           
                1     1
                1     1]

freq_item{1,3}=[2     1
                2     0
                2     1
                2     0]

freq_item{1,4}=[4     0 …
Run Code Online (Sandbox Code Playgroud)

arrays matlab vectorization

3
推荐指数
1
解决办法
94
查看次数

如何创建一个新的数据框来存储原始数据框的列的平均值?

假设我有一个数据帧,df:

>>> df

Age    Score
19     1
20     2
24     3
19     2
24     3
24     1
24     3
20     1
19     1
20     3
22     2
22     1
Run Code Online (Sandbox Code Playgroud)

我想构建一个新的数据框,用于Age存储和存储它们的平均分数Score:

Age       Score
19-21     1.6667
22-24     2.1667
Run Code Online (Sandbox Code Playgroud)

这是我的做法,我觉得这有点令人费解:

import numpy as np
import pandas as pd

data = pd.DataFrame(columns=['Age', 'Score'])
data['Age'] = [19,20,24,19,24,24,24,20,19,20,22,22]
data['Score'] = [1,2,3,2,3,1,3,1,1,3,2,1]

_, bins = np.histogram(data['Age'], 2)

df1 = data[data['Age']<int(bins[1])]
df2 = data[data['Age']>int(bins[1])]

new_df = pd.DataFrame(columns=['Age', 'Score'])
new_df['Age'] = [str(int(bins[0]))+'-'+str(int(bins[1])), str(int(bins[1]))+'-'+str(int(bins[2]))] …
Run Code Online (Sandbox Code Playgroud)

python grouping binning dataframe pandas

3
推荐指数
1
解决办法
57
查看次数

如何在MATLAB中按照其他向量的顺序对矩阵的列进行排序?

假设我有一个A项目ID 向量:

A=[50936
   332680
   107430
   167940
   185820
   99732
   198490
   201250
   27626
   69375];
Run Code Online (Sandbox Code Playgroud)

我有一个矩阵,B其行包含向量中每个项目的8个参数的值A:

B=[0    0   0   0   0   0   0   0   0   0
   0    0   0   0   0   0   0   0   0   0
   1    0   1   0   0   1   0   1   1   1
   1    0   1   0   0   1   0   1   1   1
   0    0   1   0   0   0   0   1   0   1
   0    0   0   0   0   0   0   1   0   0
   0 …
Run Code Online (Sandbox Code Playgroud)

sorting matlab matrix

2
推荐指数
1
解决办法
157
查看次数

如何在MATLAB中绘制树,使其边缘成直角?

有了treeplot,我明白了:

nodes = [0 1 2 2 4 4 4 1 8 8 10 10];
treeplot(nodes)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何像树状图(具有直边/分支)绘制树?就像下面这个图,我用Python绘制了以下图plotly,但不是同一棵树,但它只是为了展示我想要的可视化类型:

在此输入图像描述

当我检查文档时treeplot,它说:

treeplot(P,nodeSpec,edgeSpec) allows optional parameters nodeSpec
and edgeSpec to set the node or edge color, marker, and linestyle.
Use '' to omit one or both.
Run Code Online (Sandbox Code Playgroud)

但它没有说明制作直边树而不是默认"角度"树的任何选项.

graphics tree matlab visualization graph

2
推荐指数
1
解决办法
326
查看次数

如何在不使用MATLAB循环的情况下找到向量中元素子集的出现次数?

假设X是给定的向量:

   X=[1
      2
      4
      2
      3
      1
      4
      5
      2
      4
      5];
Run Code Online (Sandbox Code Playgroud)

Y是X中给定元素的子集:

Y=[3
   4
   5];
Run Code Online (Sandbox Code Playgroud)

所需的输出是Y中元素出现在X中的次数:

out=[1
     3
     2];
Run Code Online (Sandbox Code Playgroud)

我这样做的解决方案是使用for循环:

for i=1:size(X,1)
    temp = X(X(:,1)==Y(i,1),:);
    out(i,1) = size(temp,1);
end
Run Code Online (Sandbox Code Playgroud)

但是当X和Y很大时,效率很低.那么,如何更快地利用矢量化呢?我知道histhistc,但我想不出如何在这种情况下使用它们来获得所需的输出.

matlab frequency

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

如何使用数组元素在Ruby中创建文件名?

假设我有一些元素的数组,我想在CSV文件中保存与每个元素相关的数据.这是我的代码:

require 'rubygems'
require 'csv'

category_ID = [-1, 0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 17, 18, 19, 20, 21, 91, 92, 93, 94, 101, 102, 103, 104, 105, 106, 107, 111, 112, 113, 114, 115, 116, 117, 118, 119]

CSV.foreach('C:\Users\username\Desktop\Original.csv', :headers=>true) do |row,i|
    category_ID.each {|x|}
        CSV.open('C:\Users\username\Desktop\#{x}.csv', "wb") do |csv|           
            if row[4].gsub(/^[^:]+:\s*/,"") == x
                csv << row[28].gsub(/^[^:]+:\s*/,"")
            end
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

所以我想我的文件名是-1.csv,0.csv,1.csv,..., 119.csv.但它因为#{x}文件名而出错.怎么纠正这个?谢谢.

编辑:这是 …

ruby

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

如何从word2vec的Google预训练模型中提取单词向量?

该文件GoogleNews-vectors-negative300.bin包含3亿个字向量。我认为(不确定)在编写以下行时已加载此文件:

from gensim.models.keyedvectors import KeyedVectors
Run Code Online (Sandbox Code Playgroud)

我想下载我在名为的列表中从外部给出的单词的向量words。这是我执行此操作的代码:

import math
import sys
import gensim
import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')

from gensim.models.keyedvectors import KeyedVectors

words = ['access', 'aeroway', 'airport', 'amenity', 'area', 'atm', 'barrier', 'bay', 'bench', 'boundary', 'bridge', 'building', 'bus', 'cafe', 'car', 'coast', 'continue', 'created', 'defibrillator', 'drinking', 'ele', 'embankment', 'entrance', 'ferry', 'foot', 'fountain', 'fuel', 'gate', 'golf', 'gps', 'grave', 'highway', 'horse', 'hospital', 'house', 'landuse', 'layer', 'leisure', 'man', 'manmade', 'market', 'marketplace', 'maxheight', 'name', 'natural', 'noexit', 'oneway', 'park', 'parking', 'pgs', 'place', 'worship', 'playground', …
Run Code Online (Sandbox Code Playgroud)

python file-handling gensim word2vec

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

如何在Python中绘制一列由另一列着色的直方图?

我有一个数据集,除其他列外,还包含 3 个标题为Gender(或MFHouse(或ABCIndicator(0 或 1)的列。A我想绘制按性别着色的House 的直方图。这是我执行此操作的代码:

import pandas as pd

df = pd.read_csv('dataset.csv', usecols=['House','Gender','Indicator')

A = df[df['House']=='A']
A = pd.DataFrame(A, columns=['Indicator', 'Gender'])
Run Code Online (Sandbox Code Playgroud)

这会正确导入 House A 各自性别的值,如其内容所示:

print(A)
            Indicator    Gender
0                   1      Male
1                   1      Male
2                   1      Male
4                   1    Female
7                   1      Male
8                   1      Male
11                  1      Male
14                  1      Male
17                  1      Male
18                  1    Female
19                  1    Female …
Run Code Online (Sandbox Code Playgroud)

python visualization data-visualization histogram pandas

1
推荐指数
1
解决办法
2万
查看次数

如何使用Networkx包显示更好的分离网络?

我使用这样的pytextrank包创建了一个图形对象:

import pytextrank
### ........................... 
### Some steps and calculations
### ...........................
graph, ranks = pytextrank.text_rank(path_stage1)
Run Code Online (Sandbox Code Playgroud)

我可以使用这个networkx包来制作这样的networkx图画:

import networkx as nx
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(50,50))
nx.draw(graph, with_labels=True) 

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但正如你所看到的,这些词主要集中在中心周围.我希望看到各类词之间的分离更高.我怎么做?

python plot graph graph-layout networkx

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

有没有一种快速的方法来计算矩阵中项目的出现次数并将它们保存在另一个矩阵中而不使用循环?

我有一个时间序列矩阵X,其第一列包含用户ID,第二列包含他们在不同时间使用的项目ID:

X=[1 4
  2 1
  4 2
  2 3
  3 4
  1 1
  4 2
  5 3
  2 1
  4 2
  5 4];
Run Code Online (Sandbox Code Playgroud)

我想找出哪个用户使用了多少次项,并将其保存在矩阵Y中.Y的行以ID的升序表示用户,列按ID的升序表示项:

Y=[1    0   0   1
   2    0   1   0
   0    0   0   1
   0    3   0   0
   0    0   1   1]
Run Code Online (Sandbox Code Playgroud)

我用来查找矩阵Y的代码使用2个for循环,这对我的大数据来说是笨重的:

no_of_users = size(unique(X(:,1)),1);
no_of_items = size(unique(X(:,2)),1);
users=unique(X(:,1));
Y=zeros(no_of_users,no_of_items);

for a=1:size(A,1)
    for b=1:no_of_users
        if X(a,1)==users(b,1)
            Y(b,X(a,2)) = Y(b,X(a,2)) + 1;
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

有更多时间有效的方法吗?

matlab matrix

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

当从文件打开链接时,美丽的汤无法从页面中提取HTML

我在文件中有一些网页链接article_links.txt,我想逐个打开,提取文本,然后打印出来.我的代码是:

import requests
from inscriptis import get_text
from bs4 import BeautifulSoup

links = open(r'C:\Users\h473\Documents\Crawling\article_links.txt', "r")

for a in links:
    print(a)
    page = requests.get(a)
    soup = BeautifulSoup(page.text, 'lxml')
    html = soup.find(class_='article-wrap')
    if html==None:
        html = soup.find(class_='mag-article-wrap')

    text = get_text(html.text)

    print(text)
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误说, ---> text = get_text(html.text)

AttributeError: 'NoneType' object has no attribute 'text'

所以,当我打印出soup变量以查看ts内容是什么时.这是我为每个链接找到的内容:

http://www3.asiainsurancereview.com//Mock-News-Article/id/42945/Type/eDaily/New-Zealand-Govt-starts-public-consultation-phase-of-review-of-insurance-law

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>Bad Request</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/></head>
<body><h2>Bad Request - Invalid URL</h2>
<hr/><p>HTTP Error 400. The request …
Run Code Online (Sandbox Code Playgroud)

html python beautifulsoup web-crawler web-scraping

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