小编yat*_*atu的帖子

反转二进制numpy数组

对于numpy数组(当然是数字)有一种"逻辑否".

例如,考虑这个数组: x = [1,0,1,0,0,1]

我正在寻找一种简单的方法来计算它的"逆" y = [0,1,0,1,1,0]

python numpy

4
推荐指数
3
解决办法
307
查看次数

Python生成所有可能的矩阵组合

我需要在Python中生成矩阵的所有组合.输入将是两个整数n和m,我需要生成该矩阵的所有可能状态,其中1和0为可能的值.

例如:

n = 3 m = 2
[[0 0 0] [1 0 0] [1 1 0]
 [0 0 0] [0 0 0] [0 0 0]
 [0 0 0],[0 0 0],[0 0 0] . . . . .
]
Run Code Online (Sandbox Code Playgroud)

有没有一种干净有效的方法可以做到这一点,因为我不知道运行时n和m的值?使用的最高值是n = 16 m = 16.

python math combinations list

4
推荐指数
2
解决办法
658
查看次数

为数据帧切片中的列添加前缀

我有一个相当大的 DataFrame(~500 列和 >5000 行)。我想为前 15 列添加一个前缀。我找到了一个函数add_prefix(),它可以一次为所有列设置前缀。我尝试了以下方法:

df[df.columns[range(0,15)]] = df[df.columns[range(0,15)]].add_prefix('f_')
Run Code Online (Sandbox Code Playgroud)

'f_'作为前缀,我想补充。然而,输出似乎没有改变。

>>>
       mean        std         var  ...         525       526  label
0 -2.546261  17.827072  317.804485  ...   -0.314016 -0.310878    0.0
1 -2.338710  17.915556  320.967136  ...   -0.345603 -0.343088    0.0
2 -2.095051  17.539407  307.630788  ...   -0.323596 -0.324990    0.0
3 -1.685209  18.257797  333.347150  ...   -0.310060 -0.320796    0.0
4 -1.846169  17.240523  297.235618  ...   -0.318660 -0.322732    0.0
Run Code Online (Sandbox Code Playgroud)

我想要的是:

>>>
     f_mean      f_std       f_var  ...         525       526  label
0 -2.546261  17.827072  317.804485  ...   -0.314016 -0.310878    0.0 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

如何通过标点符号拆分熊猫列中的长字符串

我有一个 df 看起来像这样:

words                                              col_a   col_b  
I guess, because I have thought over that. Um,       1       0 
That? yeah.                                          1       1
I don't always think you're up to something.         0       1                                                       
Run Code Online (Sandbox Code Playgroud)

我想将 df.words 存在标点符号的地方拆分(.,?!:;)为单独的行。但是,我想为每个新行保留原始行中的 col_b 和 col_b 值。例如,上面的 df 应该是这样的:

words                                              col_a   col_b  
I guess,                                             1       0
because I have thought over that.                    1       0
Um,                                                  1       0 
That?                                                1       1
yeah.                                                1       1
I don't always think you're up to something.         0       1
Run Code Online (Sandbox Code Playgroud)

python nlp pandas

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

Python:遵循元组的“路径”?

简短版本: 我所拥有的: 一个 2 元组列表,例如[("a", "b"), ("b", "c"), ("d", "e"), ("c", "d"), ("f", "g")]不一定按字母顺序排列

我想要什么: 给出一个开始字母(比如“a”)和一个结束字母(比如“e”)我希望 Python 从上面的列表中找到可用的 2-tuples 列表,它可以“链接”开始字母到结尾字母,因此在本例中,该列表将按[("a", "b"), ("b", "c"), ("c", "d"), ("d", "e")]该顺序排列(a --> b --> c --> d --> e)

更长的版本:大家好 ,这是我在 SO 上的第一篇文章,尽管我已经浏览了很长时间并且总是在这里找到我的答案,伟大的社区!

我有一些数据分析要为我的工作做,我有一定数量的数据集(为了简单起见,我在这里用字母表示)我只知道其中的数学差异:(“a”-“b”), ("b" - "c") 等(这些是我的输入)。我将用 2 元组表示这些输入。这个想法是计算数据集“a”和“e”之间的差异,即“a”-“e”,在这种情况下可以通过对一些中间数据集差异(我的输入)求和来获得:(“ a" - "b") + ("b" - "c") + ("c" - "d") + ("d" - "e") = "a" - "e"。

我想知道是否有一个 Python 模块可以完成我想要的功能,或者是否有使用 Python 语法的简单方法。在上面的简单情况下,每个字母只出现在列表中的 2 个元组上,但在一般情况下,可能会有一个额外的元组包含正确的字母,但不允许将起始字母链接到结束字母(例如如果有一个额外的元组(“b”,“h”),它会在代码的第一次迭代中找到,连同元组(“b”,“c”),但它应该被丢弃,因为字母“h”不会“引导”任何地方)。我在处理此类案件时遇到了麻烦。

我希望这个问题足够清楚,很难用简单的术语表达。

提前致谢!

python graph-theory graph networkx

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

Numpy 数组与其他数组索引会产生广播错误

我有两个索引数组。

elim=range(130,240)
tlim=range(0,610)
Run Code Online (Sandbox Code Playgroud)

要索引的数组 的I原始形状为(299, 3800)

当我尝试按如下方式对其进行索引时

I[elim,tlim]
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息。

形状不匹配:索引数组无法与形状 (110,) (610,) 一起广播

我没想到会出现这样的错误。有人能解释一下这里发生了什么吗?

谢谢!

python arrays indexing numpy multidimensional-array

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

检索 Panda Dataframe 列中列表的最后一个元素

我有这个 csv 文件示例:(将其读作 AAA 项的成本为 1000,而 AAA(1) 项的成本为 2000)

ColumnName
AAA (1000)
AAA (1) (2000)
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含所有数字的 Pandas 数据框列

IE

Column_cost
1000
2000
Run Code Online (Sandbox Code Playgroud)

我试图用 '(' 来分割它,它返回如下所示的内容(因为第二个项目的名称中有 '(' :

Result 1
Col_1 Col_2 Col_3

AAA 1000) None

AAA   1)  2000)  
Run Code Online (Sandbox Code Playgroud)

所以数字不在同一列

然后我尝试创建一列列表,它给出

Result 2

ColumnName2

[AAA,1000)]

[AAA,1),2000)]
Run Code Online (Sandbox Code Playgroud)

但同样,我不知道如何创建一个使用每个列表最后一个元素的列。

我可以为特定索引获取它,但不能为整个列获取它

x = df['ColumnName'].str.split('(',expand=True) gives Result 1 above

x = df['ColumnName'].str.split('(') gives Result 2 above
Run Code Online (Sandbox Code Playgroud)

从结果 2 中,我执行以下操作以获得一个特定单元格的所需结果,但我不知道如何为整列执行此操作(我可以对小数据集执行此操作,但不能对大数据集执行此操作)

检索特定索引的列表,获取列表的最后一个元素,用空格分割,然后检索分割列表的新元素

x[0][-1].split()[0]
x[1][-1].split()[0]
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

用Pythonic方法用相同大小的数组替换nan子数组

假设我给了numpy这样一个数组:

a = np.array([1, 2, 3, 4, np.nan, 5, np.nan, 6, np.nan])
# [1, 2, 3, 4, nan, 5, nan, 6, nan]
Run Code Online (Sandbox Code Playgroud)

我知道nan数组中值的数量,并有相应的数组进行替换,例如:

b = np.array([12, 13, 14])
# [12, 13, 14]
Run Code Online (Sandbox Code Playgroud)

将数组替换b为所有nan值的pythonic 方法是什么,以便获得结果:

[1, 2, 3, 4, 12, 5, 13, 6, 14]
Run Code Online (Sandbox Code Playgroud)

python numpy

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

合并三个numpy数组,保持最大值

我想合并三个 numpy 数组,例如:

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

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

b = array([[1, 0, 0],
           [0, 1, 0],
           [0, 0, 1]])

c = array([[0, 1, 0],
           [0, 2, 0],
           [0, 1, 0]])

Run Code Online (Sandbox Code Playgroud)

期望的结果是覆盖它们,但在多个元素不为 0 的情况下保持最大值,例如在中间。

array([[1, 1, 1],
       [0, 2, 0],
       [1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)

我通过迭代具有多个 if 条件的所有元素来解决这个问题。有没有更紧凑、更漂亮的方法来做到这一点?

python numpy

3
推荐指数
2
解决办法
222
查看次数

根据 NetworkX 中的权重改变边缘的厚度

我正在尝试使用 Python Networkx 包绘制网络图。我想根据赋予边缘的权重来改变边缘的厚度。

我正在使用以下代码绘制图表,但我无法根据重量使边缘改变其厚度。有人可以帮我解决这个问题吗?提前致谢。

df = pd.DataFrame({ 'from':['D', 'A', 'B', 'C','A'], 'to':['A', 'D', 'A', 'E','C'], 'weight':['1', '5', '8', '3','20']})
G=nx.from_pandas_edgelist(df, 'from', 'to', edge_attr='weight', create_using=nx.DiGraph() )
nx.draw_shell(G, with_labels=True, node_size=1500, node_color='skyblue', alpha=0.3, arrows=True, 
              weight=nx.get_edge_attributes(G,'weight').values())
Run Code Online (Sandbox Code Playgroud)

python networkx

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