对于numpy数组(当然是数字)有一种"逻辑否".
例如,考虑这个数组:
x = [1,0,1,0,0,1]
我正在寻找一种简单的方法来计算它的"逆"
y = [0,1,0,1,1,0]
我需要在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.
我有一个相当大的 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) 我有一个 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) 简短版本:
我所拥有的:
一个 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”不会“引导”任何地方)。我在处理此类案件时遇到了麻烦。
我希望这个问题足够清楚,很难用简单的术语表达。
提前致谢!
我有两个索引数组。
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,) 一起广播
我没想到会出现这样的错误。有人能解释一下这里发生了什么吗?
谢谢!
我有这个 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) 假设我给了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) 我想合并三个 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 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)