标签: in-place

Python a&= b是什么意思?

&=运算符在Python中意味着什么,你能给我一个有效的例子吗?

我想了解__iand__运营商.

我只是不知道是什么&=意思,并已在网上看,但找不到它.谢谢.

python operators in-place ampersand

7
推荐指数
3
解决办法
3960
查看次数

在Python 3.x中更改了`__rdiv __()`和`__idiv__`运算符?

在Python 3.x中,__div__()运营商不赞成使用 __floordiv__()__truediv__().

__rdiv__()__idiv__()运算符是否仍然用于指代反向和就地版本__truediv__()?如果是这样,反向和就地版本的运营商名称是__floordiv__()什么?

python operator-overloading in-place python-3.x

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

Numpy:inplace和explicit操作的奇怪的不同行为

我想操作numpy数组来使用它们的索引,我想要包含0维的情况.现在我遇到了一个奇怪的情况,如果我不使用就地乘法,则会出现类型转换:

In [1]: import numpy as np

In [2]: x = 1.*np.array(1.)

In [3]: y = np.array(1.)

In [4]: y *= 1.

In [5]: x
Out[5]: 1.0

In [6]: y
Out[6]: array(1.)

In [7]: type(x)
Out[7]: numpy.float64

In [8]: type(y)
Out[8]: numpy.ndarray
Run Code Online (Sandbox Code Playgroud)

为什么x的类型与y不同?我知道,inplace操作是不同的实现,他们不创建数组的副本,但我不明白,为什么类型被更改,如果我将一个0d数组与浮点数相乘?它适用于1d阵列:

In [1]: import numpy as np

In [2]: x = np.array(1.)

In [3]: y = np.array([1.])

In [4]: 1.*x
Out[4]: 1.0

In [5]: 1.*y
Out[5]: array([1.])

In [7]: type(1.*x)
Out[7]: numpy.float64

In [8]: type(1.*y)
Out[8]: numpy.ndarray
Run Code Online (Sandbox Code Playgroud)

我想,这很奇怪......现在我遇到了以下问题,我必须分别处理0d数组: …

python arrays numpy in-place numpy-ndarray

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

在python中按原始顺序查找列表的前k个最大项

说我有以下清单:

my_list = [3.5, 1.6, 2.4, 8.9, 5.6]
Run Code Online (Sandbox Code Playgroud)

我想在原来的地方找到前3个最大的数字,所以结果应该是:

[3.5, 8.9, 5.6]
Run Code Online (Sandbox Code Playgroud)

我怎么能那样做?我想我可以找到 3 个最大的数字并使用过滤器,但我认为比较浮点数可能不是一个好主意。有什么建议?

python sorting floating-accuracy in-place

7
推荐指数
2
解决办法
3315
查看次数

就地修改文本文件的最佳方法是什么?

如果已经有人问过类似的问题,我深表歉意——我确实搜索了一些东西,我可能错过了一些东西,但至少在我看来,其他问题的答案并不是我想做的事情。

我有一个包含以下信息的文本文件(我们称之为“Potatoes.txt”):

Town 1,300,
Town 2,205,
Town 3,600,
Town 4,910,
Town 5,360,
Run Code Online (Sandbox Code Playgroud)

我想做的是减少某些城镇的数量,并相应地修改文本文件。我做了一些研究,看起来你不能修改文本文件,我需要文本文件具有相同的名称,只是里面有不同的值,所以我目前正在这样做:

f = open("ModifiedPotatoes.txt","w")
f.close()

with open("Potatoes.txt","r") as file:
    for line in file:
       info = line.split(",")
       if "Town 2" or "Town 4" in line:
           info[1] -= 20
       with open("ModifiedPotatoes.txt","a"):
           infoStr = "\n" + ",".join(str(x) for x in info)
           file.write(infoStr)

f = open("Potatoes.txt","w")
f.close()

with open("ModifedPotatoes.txt","r") as file:
    for line in file:
        with open("Potatoes.txt","a") as potatoesFile:
            potatoesFile.write(line)
Run Code Online (Sandbox Code Playgroud)

所以基本上我只是将旧文件覆盖为空白文件,然后从修改后的/临时文件中复制值。有没有更好的方法来做到这一点我想念的?

谢谢您的帮助。

python file in-place

6
推荐指数
2
解决办法
9925
查看次数

使用 sed 在文件中插入存储在变量中的多行

乌班图14.04

我想将源文件中存储的几行插入到目标文件中。我将读取变量中的所有这些行$var,即如果我这样做,echo "${var}"它将给出以下输出 - 我想将其添加到我的 apache 配置文件中的给定行中。

我的确切源文件(又名${var})内容是:

        ## apppush proxying - get content from live site --##
        RewriteRule /apppush/hreflang/(.*) http://localhost:8081/hreflang.php?u=https://www.company.com/apppush/hreflang/$1 [P,L]

        RewriteCond /www/retaildb/companycom/us/branches/somebranch/us/%{SCRIPT_FILENAME} -d [OR]
        RewriteCond /www/retaildb/companycom/us/branches/somebranch/us/%{SCRIPT_FILENAME} -f
        RewriteRule ^/apppush/retail/(.*) /www/retaildb/companycom/us/branches/somebranch/us/%{SCRIPT_FILENAME} [L]

        ## Search/GIGA apppush rewrite
        RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-f
        RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-d
        RewriteRule ^/apppush/(.*)/search/(.*) /www/giga/%{SCRIPT_FILENAME} [L]

        RewriteRule /apppush/(.*) https://www.company.com/apppush/$1 [P]
        ## END apppush Rewrites --##
Run Code Online (Sandbox Code Playgroud)

为了使用简单的示例执行上述操作,我尝试了以下命令,这给了我一个错误。

例如:我想将${var}包含一些值(总共 3 行)的内容添加到 giga.txt 文件中的第 3 行。

$ cat giga.txt
1
2
3
4 …
Run Code Online (Sandbox Code Playgroud)

linux sed in-place

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

如何使用 jq 更新 json 文档中嵌套对象数组中的单个值?

我有一个如下所示的 JSON 文档。请注意,这是真实 JSON 的简化示例,包含在问题的底部:

{
  "some_array": [
    {
      "k1": "A",
      "k2": "XXX"
    },
    {
      "k1": "B",
      "k2": "YYY"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想更改数组k2中所有键的值some_array,其中键的值为k1“B”。

使用 jq 可以吗?

作为参考,这是实际的 JSON 文档,它是用于postman / newman工具的环境变量文件。我正在尝试使用 JQ 进行此转换,因为该工具尚不支持特定环境变量的命令行覆盖

实际 JSON

{
  "name": "Local-Stack-Env-Config",
  "values": [
    {
      "enabled": true,
      "key": "KC_master_host",
      "type": "text",
      "value": "http://localhost:8087"
    },
    {
      "enabled": true,
      "key": "KC_user_guid",
      "type": "text",
      "value": "11111111-1111-1111-1111-11111111111"
    }
  ],
  "timestamp": 1502768145037,
  "_postman_variable_scope": "environment",
  "_postman_exported_at": "2017-08-15T03:36:41.474Z",
  "_postman_exported_using": "Postman/5.1.3"
}
Run Code Online (Sandbox Code Playgroud)

json edit in-place jq

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

Numpy重塑到位

有没有办法在numpy数组上进行重构,但是就地.我的问题是我的阵列非常大,所以任何不必要的副本都不会给内存带来压力.

我目前的做法是这样的:

train_x = train_x.reshape(n,32*32*3)
Run Code Online (Sandbox Code Playgroud)

这并没有完全解决问题,因为它创建了一个新数组,然后将标签train_x赋予新数组.

在正常情况下这可以,因为垃圾收集器很快就会收集原始数组.

问题是我有这样的事情:

train_x, train_y = train_set
train_x = train_x.reshape(n,32*32*3)
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,即使train_x不再指向原始数组,仍然有一个指向原始数组的指针train_set.

我想要一种方法将前一个数组的所有指针更改为这个新数组.有办法吗?

或许还有其他一些方法来处理这个/

numpy in-place memory-consumption reshape

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

Array.prototype.copyWithin() 存在哪些用例?

很明显,该方法是如何工作的:

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

console.log(f.copyWithin(4,2,5));

//  copy elements between 2 (start) & 5 (end) -> to target -> 4  

//  [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' ] <-- original array
//               ^    ^    ^
//               |    |    |                   <-- [2,5[ = c,d,e
//     0 -  1 -  2 -  3  - 4 -  5 -  6 -  7
//                         |    
//                        'c', 'd', 'e',       <-- copy to 4
//  [ 'a', 'b', 'c', 'd',  |    |    | …
Run Code Online (Sandbox Code Playgroud)

javascript arrays methods copy in-place

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

为类中的方法实现就地操作

pandas很多方法中都有关键字参数inplace。这意味着 if inplace=True,被调用的函数将在对象本身上执行,并返回 None ,另一方面,如果inplace=False原始对象将保持不变,则在返回的新实例上执行该方法。我已经成功地实现了这个功能,如下所示:

from copy import copy

class Dummy:
    def __init__(self, x: int):
        self.x = x

    def increment_by(self, increment: int, inplace=True):
        if inplace:
            self.x += increment
        else:
            obj = copy(self)
            obj.increment_by(increment=increment, inplace=True)
            return obj

    def __copy__(self):
        cls = self.__class__
        klass = cls.__new__(cls)
        klass.__dict__.update(self.__dict__)
        return klass
    
if __name__ == "__main__":
    a = Dummy(1)
    a.increment_by(1)
    assert a.x == 2
    b = a.increment_by(2, inplace=False)
    assert a.x == 2
    assert b.x == 4
Run Code Online (Sandbox Code Playgroud)

它按预期工作。但是,我有很多方法可以重复相同的模板:

def …
Run Code Online (Sandbox Code Playgroud)

python decorator in-place

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