在Python 3.x中,__div__()运营商不赞成使用 __floordiv__()和__truediv__().
__rdiv__()和__idiv__()运算符是否仍然用于指代反向和就地版本__truediv__()?如果是这样,反向和就地版本的运营商名称是__floordiv__()什么?
我想操作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数组: …
说我有以下清单:
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 个最大的数字并使用过滤器,但我认为比较浮点数可能不是一个好主意。有什么建议?
如果已经有人问过类似的问题,我深表歉意——我确实搜索了一些东西,我可能错过了一些东西,但至少在我看来,其他问题的答案并不是我想做的事情。
我有一个包含以下信息的文本文件(我们称之为“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)
所以基本上我只是将旧文件覆盖为空白文件,然后从修改后的/临时文件中复制值。有没有更好的方法来做到这一点我想念的?
谢谢您的帮助。
乌班图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) 我有一个如下所示的 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) 有没有办法在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.
我想要一种方法将前一个数组的所有指针更改为这个新数组.有办法吗?
或许还有其他一些方法来处理这个/
很明显,该方法是如何工作的:
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) 在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)